Strona man logrotatemówi, że:
It can be used when some program cannot be told to close its logfile
and thus might continue writing to the previous log file for some
time.
Jestem tym zmieszany. Jeśli nie można nakazać programowi, aby zamknął swój plik dziennika, będzie kontynuował pisanie w nieskończoność , nie na jakiś czas . Jeśli kompresja zostanie przełożona na następny cykl rotacji, program będzie kontynuował zapisywanie do tego pliku nawet po następnym cyklu rotacji. Jak odroczenie rozwiązania problemu?
Rozumiem, że copytruncatenależy tego użyć, gdy program nie może nakazać zamknięcia pliku dziennika. Wiem, że niektóre dane zapisane w pliku dziennika gubią się podczas kopiowania.
Patrzyłem na plik logrotate dla couchdb, który zawierał obie opcje copytruncatei delaycompressopcje.
/usr/local/couchdb-1.0.1/var/log/couchdb/*.log {
weekly
rotate 10
copytruncate
delaycompress
compress
notifempty
missingok
}
Wygląda na to, że nie ma sensu używać, delaycompresskiedy copytruncatejuż tam jest. czego mi brakuje?
copytruncate, nie ma potrzeby, aby program zamykał swój plik dziennika. Czy to nie ma sensu określaćdelaycompresswraz zcopytruncate?