Au fil du temps, j'ai remarqué quelques journaux /var/log
tels que auth
, kern
et messages
devenaient énormes. J'ai fait des logrotate
entrées pour eux:
$ cat /etc/logrotate.d/auth.log
/var/log/kern.log {
rotate 5
daily
}
$ cat /etc/logrotate.d/kern.log
/var/log/kern.log {
rotate 5
daily
}
$ cat /etc/logrotate.d/messages
/var/log/messages {
rotate 5
daily
postrotate
/bin/killall -HUP syslogd
endscript
}
j'ai aussi l' compress
option activée:
$ grep compress /etc/logrotate.conf
# uncomment this if you want your log files compressed
compress
Cela fonctionne très bien pour auth.log
, kern.log
et d'autres, ce qui signifie que chacun de ces journaux est compressé et tourné, avec les 5 derniers jours de journaux conservés. /var/log/messages
n'est cependant pas compressé, ce qui entraîne plus de 5 jours de journaux:
$ ls /var/log/messages*
/var/log/messages /var/log/messages-20100213
/var/log/messages-20100201 /var/log/messages-20100214
/var/log/messages-20100202 /var/log/messages-20100215
/var/log/messages-20100203 /var/log/messages-20100216
/var/log/messages-20100204 /var/log/messages-20100217
/var/log/messages-20100205 /var/log/messages-20100218
/var/log/messages-20100206 /var/log/messages-20100219
/var/log/messages-20100207 /var/log/messages-20100220
/var/log/messages-20100208 /var/log/messages-20100221
/var/log/messages-20100209 /var/log/messages-20100222
/var/log/messages-20100210 /var/log/messages-20100223
/var/log/messages-20100211 /var/log/messages-20100224
/var/log/messages-20100212
Comme expliqué dans une autre logrotate
question sur ServerFault , les anciens journaux ne sont (probablement) pas supprimés car les fins de fichier sont différentes pour chaque fichier. Cela semble être dû au fait que les fichiers ne sont pas compressés.
Que puis-je faire pour avoir /var/log/messages
compressé et tourné avec les 5 derniers jours de journaux conservés comme tous mes autres fichiers journaux? Qu'est-ce que je rate?
EDIT 1 : informations supplémentaires demandées dans les premières réponses du couple.
J'utilise Gentoo Linux. Mon /etc/logrotate.conf
dossier:
$ cat /etc/logrotate.conf
# $Header: /var/cvsroot/gentoo-x86/app-admin/logrotate/files/logrotate.conf,v 1.3 2008/12/24 20:49:10 dang Exp $
#
# Logrotate default configuration file for Gentoo Linux
#
# See "man logrotate" for details
# rotate log files weekly
weekly
#daily
# keep 4 weeks worth of backlogs
rotate 4
# create new (empty) log files after rotating old ones
create
# use date as a suffix of the rotated file
dateext
# uncomment this if you want your log files compressed
compress
# packages can drop log rotation information into this directory
include /etc/logrotate.d
notifempty
nomail
noolddir
# no packages own lastlog or wtmp -- we'll rotate them here
/var/log/wtmp {
monthly
create 0664 root utmp
rotate 1
}
/var/log/btmp {
missingok
monthly
create 0600 root utmp
rotate 1
}
/etc/logrotate.d
contient mes fichiers de configuration personnalisés comme mentionné ci-dessus ainsi que les configurations pour mysql, rsync, etc. installées par ces packages.
Ma racine crontab
est vide:
$ sudo crontab -l
no crontab for root
J'ai tout vérifié /etc/cron.{daily,hourly,monthly,weekly}
pour tout ce qui concerne Syslog, et il y a un script qui tourne /var/log/syslog
et /var/log/auth.log
.
Ensuite, j'ai fait un /var/log/messages
-seulement logrotate
fichier de configuration comme suggéré par CarpeNoctem:
$ cat logrotate-messages
weekly
rotate 4
create
dateext
compress
notifempty
nomail
noolddir
/var/log/messages {
rotate 5
daily
postrotate
/bin/killall -HUP syslogd
endscript
}
Ensuite, j'ai couru logrotate
manuellement:
$ logrotate -d logrotate-messages -f
reading config file logrotate-messages
reading config info for /var/log/messages
Handling 1 logs
rotating pattern: /var/log/messages forced from command line (5 rotations)
empty log files are not rotated, old logs are removed
considering log /var/log/messages
log needs rotating
rotating log /var/log/messages, log->rotateCount is 5
dateext suffix '-20100224'
glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
glob finding old rotated logs failed
renaming /var/log/messages to /var/log/messages-20100224
creating new /var/log/messages mode = 0644 uid = 0 gid = 0
running postrotate script
running script with arg /var/log/messages : "
/bin/killall -HUP syslogd
"
compressing log with: /bin/gzip
$ which gzip
/bin/gzip
$ file /bin/gzip
/bin/gzip: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.9, stripped
Selon le journal ci-dessus, logrotate
compressé le journal avec / bin / gzip, mais je ne vois pas de fichier de messages compressé dans /var/log
. En outre, la globalisation des anciens fichiers pivotés a échoué.
EDIT 2 : ajout de la sortie de débogage de l' logrotate
exécution après avoir ajouté un .gz
suffixe aux anciens /var/log/message-*
fichiers.
Nous commençons avec:
$ ls /var/log/messages*
/var/log/messages /var/log/messages-20100222.gz
/var/log/messages-20100219.gz /var/log/messages-20100223.gz
/var/log/messages-20100220.gz /var/log/messages-20100224.gz
/var/log/messages-20100221.gz
Exécutez ensuite logrotate
avec notre fichier de configuration personnalisé:
$ logrotate -d logrotate-messages -f
reading config file logrotate-messages
reading config info for /var/log/messages
Handling 1 logs
rotating pattern: /var/log/messages forced from command line (5 rotations)
empty log files are not rotated, old logs are removed
considering log /var/log/messages
log needs rotating
rotating log /var/log/messages, log->rotateCount is 5
dateext suffix '-20100224'
glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
removing /var/log/messages-20100219.gz
removing old log /var/log/messages-20100219.gz
destination /var/log/messages-20100224.gz already exists, skipping rotation
Cette fois, logrotate
glob réussit et trouve le sixième fichier journal compressé, avec l'intention de le supprimer. Le fichier n'est pas réellement supprimé; Je suppose que c'est parce que nous fonctionnons en mode débogage.
Je suis curieux de savoir si l'activation de l' delaycompress
option pour vous /var/log/messages
aidera. Je l'ai activé et vérifierai les résultats le lendemain matin.