Řešení 1:
Přidání delaycompress
do sekce konfigurace pro /var/log/messages
problém vyřešil.
Od man logrotate
:
delaycompress
Postpone compression of the previous log file to the next rota‐
tion cycle. This only has effect when used in combination with
compress. It can be used when some program cannot be told to
close its logfile and thus might continue writing to the previ‐
ous log file for some time.
Myslím, že sysklogd
, mému démonovi syslog, nelze říct, aby zavřel svůj soubor protokolu, a proto je to nutné.
Zajímavé je, že původní konfigurace, kterou jsem měl (bez delaycompress
směrnice), vyšel přímo z man logrotate
(kromě toho, že jsem změnil weekly
až daily
):
# sample logrotate configuration file
compress
/var/log/messages {
rotate 5
weekly
postrotate
/usr/bin/killall -HUP syslogd
endscript
}
Řešení 2:
Těžko říct jen s touto informací, ale můžu vám říct, co mě několikrát zachránilo.
Logrotate má možnost ladění, která vytiskne play-by-play každý krok, který je potřeba ke stdout. Takže v tomto případě můžete udělat:
logrotate -d /etc/logrotate.conf
Výstup vám řekne, co se přesně děje. Také, pokud chcete zúžit výstup ladění, můžete to udělat
logrotate -d /etc/logrotate.d/messages
I když možná budete chtít dočasně umístit hlavní volby logrotate.conf do tohoto bloku souborů, protože zadáním souboru přímo znamená, že nikdy nebude číst hlavní možnosti konfigurace. Zadání jednotlivého souboru také znamená, že můžete použít -f
možnost (force) v kombinaci s možností ladění, abyste se podívali na aktuální rotaci souboru zpráv.