La pagina man di logrotate
dice che:
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.
Sono confuso da questo. Se non si può dire a un programma di chiudere il suo file di registro, continuerà a scrivere per sempre , non per qualche tempo . Se la compressione viene posticipata al prossimo ciclo di rotazione, il programma continua a scrivere su quel file anche dopo il successivo ciclo di rotazione. In che modo il rinvio risolve il problema?
La mia comprensione è che copytruncate
dovrebbe essere usato quando un programma non può essere detto di chiudere il file di registro. Sono consapevole che alcuni dati scritti nel file di registro vengono persi quando la copia è in corso.
Stavo guardando il file logrotate per CouchDB, ed è avuto sia copytruncate
e delaycompress
opzioni.
/usr/local/couchdb-1.0.1/var/log/couchdb/*.log {
weekly
rotate 10
copytruncate
delaycompress
compress
notifempty
missingok
}
Sembra che non abbia senso usare delaycompress
quando copytruncate
è già lì. Cosa mi sto perdendo?
copytruncate
, non è necessario dire al programma di chiudere il suo file di registro. Quindi non ha senso specificaredelaycompress
insiemecopytruncate
?