Au fil du temps, j'ai remarqué quelques journaux /var/logtels que auth, kernet messagesdevenaient énormes. J'ai fait des logrotateentré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' compressoption 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.loget 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/messagesn'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 logrotatequestion 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/messagescompressé 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.confdossier:
$ 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 crontabest 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/sysloget /var/log/auth.log.
Ensuite, j'ai fait un /var/log/messages-seulement logrotatefichier 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 logrotatemanuellement:
$ 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, logrotatecompressé 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' logrotateexécution après avoir ajouté un .gzsuffixe 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 logrotateavec 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, logrotateglob 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' delaycompressoption pour vous /var/log/messagesaidera. Je l'ai activé et vérifierai les résultats le lendemain matin.