Logrotate
何時在 logrotate 中使用 delaycompress 選項?
的手冊頁
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 文件,它同時具有
copytruncate
和delaycompress
選項。/usr/local/couchdb-1.0.1/var/log/couchdb/*.log { weekly rotate 10 copytruncate delaycompress compress notifempty missingok }
看起來使用
delaycompress
whencopytruncate
is already there 是沒有意義的。我錯過了什麼?
您的理解
copytruncate
是正確的,但是手冊頁中的措辭 fordelaycompress
有點誤導。更準確地說,它應該說“當某些程序無法被告知立即關閉它的日誌文件時”——例如,如果您使用的是 sharedscripts,並且當所有日誌文件都已輪換時,腳本會使用日誌向程序發送信號.
我們用:
- 日常
- 延遲壓縮
- 節點文本
這將創建 apache 的固定副本,
access_log
access_log.1
以便我們可以在一天結束時將 Stats 包作為腳本執行。次日logrotate壓縮文件創建
access_log.2.zip