Logrotate

何時在 logrotate 中使用 delaycompress 選項?

  • August 12, 2021

的手冊頁logrotate說:

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.

我對此感到困惑。如果一個程序不能被告知關閉它的日誌文件,它將永遠繼續寫,而不是一段時間。如果壓縮被推遲到下一個旋轉週期,即使在下一個旋轉週期之後,程序也會繼續寫入該文件。延期如何解決問題?

我的理解是copytruncate當程序不能被告知關閉日誌文件時應該使用它。我知道在復製過程中寫入日誌文件的一些數據會失去。

我正在查看 couchdb 的 logrotate 文件,它同時具有copytruncatedelaycompress選項。

/usr/local/couchdb-1.0.1/var/log/couchdb/*.log {
  weekly
  rotate 10
  copytruncate
  delaycompress
  compress
  notifempty
  missingok
}

看起來使用delaycompresswhen copytruncateis already there 是沒有意義的。我錯過了什麼?

您的理解copytruncate是正確的,但是手冊頁中的措辭 fordelaycompress有點誤導。更準確地說,它應該說“當某些程序無法被告知立即關閉它的日誌文件時”——例如,如果您使用的是 sharedscripts,並且當所有日誌文件都已輪換時,腳本會使用日誌向程序發送信號.

我們用:

  • 日常
  • 延遲壓縮
  • 節點文本

這將創建 apache 的固定副本,access_log access_log.1以便我們可以在一天結束時將 Stats 包作為腳本執行。

次日logrotate壓縮文件創建access_log.2.zip

引用自:https://serverfault.com/questions/292513