logrotate

4 risposte [Ultimo messaggio]
Ritratto di zioandrea
zioandrea
(Junior)
Offline
Junior
Iscritto: 14/12/2004
Messaggi: 14

Salve a tutti,
ho uno strano problema con i log di sistema. Sulla macchina che utilizzo al lavoro raggiungono dimensioni assurde:

du /var/log/* |grep M
690M    /var/log/kernel
691M    /var/log/messages
691M    /var/log/syslog

contengono mesi di log e ne viene salvato solo uno vecchio (kernel.1 etc), che ho appena cancellato per evidenti problemi di spazio.
Sulla macchina di casa, invece, ho quattro file "storici" e tutti di dimensioni ragionevoli.

Quello che mi mette in crisi è il fatto che i due file /etc/logrotate sono assolutamente identici :-0
Cosa è che regola la gestione dei file di log?
Probabilmente, da qualche parte c'è scritto di leggere un altro file al posto di logrotate.conf. Dove?

Questo è il mio attuale logrotate.conf che sembra assolutamente innocuo

# Mandriva logrotate configuration
# $Id: logrotate.conf 533703 2010-04-12 15:43:25Z eugeni $
 
# rotate log files weekly
weekly
 
# keep 4 weeks worth of backlogs
rotate 4
 
# create new (empty) log files after rotating old ones
create
 
# allow missing log
missingok
 
# do not rotate empty files
notifempty
 
# uncomment this if you want your log files compressed
compress
delaycompress
 
# RPM packages drop log rotation information into this directory
include /etc/logrotate.d
 
# no packages own lastlog, wtmp, or btmp -- we'll rotate them here
/var/log/wtmp {
    create 0664 root utmp
    rotate 1
}
 
/var/log/btmp {
    create 0600 root utmp
    rotate 1
}
 
# system-specific logs may be configured here

ciao e grazie per le risposte, Andrea

Ritratto di Army75
Army75
(Guru)
Offline
Guru
Iscritto: 19/10/2005
Messaggi: 507

Ciao Andrea,

per vedere lo stato del logrotate sul tuo pc:
cat /var/lib/logrotate.status

invece il cron che lo lancia :

/etc/cron.daily/logrotate

nota che /etc/cron.daily puoi eseguirlo manualmente e vedere cosa succede.
Controlla anche che il crontab sia impostato cosi:
cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# run-parts
01 * * * * root nice -n 19 run-parts --report /etc/cron.hourly
02 4 * * * root nice -n 19 run-parts --report /etc/cron.daily
22 4 * * 0 root nice -n 19 run-parts --report /etc/cron.weekly
42 4 1 * * root nice -n 19 run-parts --report /etc/cron.monthly

Fammi sapere cosa scopri.

Ciao

Armando

2010.2 Official - KDE 4.4.2 - Gnome 2.30.0 -- kernel 2.6.36.2 server on HP Pavilion dv5- AMD Athlon x2 - only official repo

Ritratto di zioandrea
zioandrea
(Junior)
Offline
Junior
Iscritto: 14/12/2004
Messaggi: 14

Salve, continuo a capirci poco. Stupidamente ho provato a lanciare /etc/cron.daily/logrotate prima di controllare logrotate.status .
Comunque, andiamo per ordine.

Il mio /etc/crontab sembra identico al tuo. Lo riporto per scrupolo:

cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
 
# run-parts
01 * * * * root nice -n 19 run-parts --report /etc/cron.hourly
02 4 * * * root nice -n 19 run-parts --report /etc/cron.daily
22 4 * * 0 root nice -n 19 run-parts --report /etc/cron.weekly
42 4 1 * * root nice -n 19 run-parts --report /etc/cron.monthly

Anche il cron.daily sembra OK

#!/bin/sh
# Mandriva logrotate cron t
# $Id: logrotate.cron 189740 2008-03-24 12:07:34Z guillomovitch $
 
log=/tmp/$$$$
/usr/sbin/logrotate /etc/logrotate.conf >$log 2>&1
rc=$?
if [ $rc != 0 ]; then
    /usr/bin/logger -t logrotate "ALERT exited abnormally with [$rc]"
    /usr/bin/logger -t logrotate -f $log
fi
rm -f $log

Dopo aver fatto girare il cron.daily le prime righe dello status sono

logrotate state -- version 2
"/var/log/syslog" 2011-6-16
"/var/log/mail/warnings.log" 2011-4-9
"/var/log/daemons/errors.log" 2011-6-16
"/var/log/auth.log" 2011-6-16
"/var/log/sudo.log" 2011-4-9

ossia tutte le date sono di oggi o del 9 aprile.

A questo punto mi viene un dubbio: non è che logrotate viene lanciato a mezzanotte?
A quell'ora il PC di casa è normalmente acceso, quello del lavoro no. Potrei essermi dimenticato di spegnerlo il 9 aprile.

Andrea

Ritratto di Army75
Army75
(Guru)
Offline
Guru
Iscritto: 19/10/2005
Messaggi: 507

Ciao Andrea,

il crontab va letto cosi`:
01 * * * * root nice -n 19 run-parts --report /etc/cron.hourly
02 4 * * * root nice -n 19 run-parts --report /etc/cron.daily
22 4 * * 0 root nice -n 19 run-parts --report /etc/cron.weekly
42 4 1 * * root nice -n 19 run-parts --report /etc/cron.monthly

s1, s2, s3, s4, s5 sono stringhe che specificano l'intervallo di esecuzione. Ognuna di queste stringhe puo' contenere il carattere "*" per indicare tutti i valori possibili.

"s1" rappresenta i minuti. I valori permessi vanno da 0 a 59. E' possibile specificare anche intervalli (piu' avanti spiegati brevemente).
"s2" rappresenta le ore. I valori permessi vanno da 0 a 23. E' possibile specificare anche intervalli (piu' avanti spiegati brevemente).
"s3" rappresenta i giorni all'interno di un mese. I valori permessi vanno da 1 a 31. E' possibile specificare anche intervalli (piu' avanti spiegati brevemente).
"s4" rappresenta i mesi. I valori permessi vanno da 1 a 12 (piu' i nomi in lettere). E' possibile specificare anche intervalli (piu' avanti spiegati brevemente).
"s5" rappresenta i giorni della settimana. I valori permessi vanno da 0 a 7 (piu' i nomi in lettere, 0 e 7 rappresentano entrambi la Domenica). E' possibile specificare anche intervalli (piu' avanti spiegati brevemente).
preso dal sito: http://feelinglinux.com/articles/cron.jsp

Quindi nel tuo caso il cron gira alle 4 del mattino circa per il daily/weekly/montly invece ogni primo minuto per l'hourly.
In pratica se alle 4 del mattino il pc e` spento il cron non gira.

2010.2 Official - KDE 4.4.2 - Gnome 2.30.0 -- kernel 2.6.36.2 server on HP Pavilion dv5- AMD Athlon x2 - only official repo

Ritratto di zioandrea
zioandrea
(Junior)
Offline
Junior
Iscritto: 14/12/2004
Messaggi: 14

In effetti, una volta sortomi il dubbio (mentre ti rispondevo) ho dato un bel

man 5  crontab

e ho spostato tutti i cron alle 13, quando di solito sono a pranzo e il pc resta acceso Wink

Comunque, ti ringrazio moltissimo perché, se non ne parlavo con te, non so se e quando ci sarei arrivato da solo.

ciao, Andrea