A página do manual logrotatediz que:
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.
Estou confuso com isso. Se um programa não puder ser solicitado a fechar seu arquivo de log, ele continuará gravando para sempre , não por um tempo . Se a compactação for adiada para o próximo ciclo de rotação, o programa continuará gravando nesse arquivo mesmo após o próximo ciclo de rotação. Como o adiamento está resolvendo o problema?
Meu entendimento é que isso copytruncatedeve ser usado quando um programa não puder ser solicitado para fechar o arquivo de log. Estou ciente de que alguns dados gravados no arquivo de log são perdidos quando a cópia está em andamento.
Eu estava olhando para o arquivo logrotate para couchdb, e tinha tanto copytruncatee delaycompressopções.
/usr/local/couchdb-1.0.1/var/log/couchdb/*.log {
weekly
rotate 10
copytruncate
delaycompress
compress
notifempty
missingok
}
Parece que não faz sentido usar delaycompressquando copytruncatejá está lá. o que estou perdendo?
copytruncate, não há necessidade de dizer ao programa para fechar seu arquivo de log. Então, não faz sentido especificardelaycompressjuntocopytruncate?