Die Manpage von logrotate
sagt:
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.
Das verwirrt mich. Wenn ein Programm nicht angewiesen werden kann, seine Protokolldatei zu schließen, schreibt es für immer weiter , nicht für eine Weile . Wenn die Komprimierung auf den nächsten Rotationszyklus verschoben wird, schreibt das Programm auch nach dem nächsten Rotationszyklus weiter in diese Datei. Wie verschiebt sich das Problem?
Nach meinem Verständnis copytruncate
sollte dies verwendet werden, wenn ein Programm nicht angewiesen werden kann, die Protokolldatei zu schließen. Mir ist bekannt, dass einige in die Protokolldatei geschriebene Daten verloren gehen, wenn der Kopiervorgang ausgeführt wird.
Ich habe in der Logrotate-Datei nach couchdb gesucht, und es gab sowohl Optionen copytruncate
als auch delaycompress
Optionen.
/usr/local/couchdb-1.0.1/var/log/couchdb/*.log {
weekly
rotate 10
copytruncate
delaycompress
compress
notifempty
missingok
}
Es sieht so aus, als hätte es keinen Sinn, zu verwenden, delaycompress
wenn copytruncate
es bereits da ist. Was vermisse ich?
copytruncate
, muss das Programm nicht angewiesen werden, die Protokolldatei zu schließen. Ist es also sinnlos,delaycompress
zusammen mit anzugebencopytruncate
?