Logrotate
為什麼我們應該一起使用 create 和 copytruncate ?
Geek Stuff有一個關於
logrotate
.copytruncate
將複製並截斷原始日誌文件。那我們為什麼要使用
create
呢?原始日誌文件尚未刪除。/tmp/output.log { size 1k copytruncate create compress compresscmd /bin/bzip2 compressext .bz2 rotate 4 maxage 100 }
另一個問題是有什麼用
maxage 100
?該rotate 4
指令將在 4 次輪換後刪除舊的日誌文件。
這可能是一個錯誤,僅在該教程的一個範例中發現。所有其他範例都
copytruncate
沒有該create
選項。logrotate
手冊頁還指出它實際上會被忽略:
copytruncate
在創建副本後將原始日誌文件截斷為零大小,而不是移動舊日誌文件並選擇性地創建新日誌文件。當某些程序無法被告知關閉其日誌文件並因此可能永遠繼續寫入(附加)到前一個日誌文件時,可以使用它。請注意,複製文件和截斷文件之間的時間片非常短,因此可能會失去一些日誌記錄數據。使用此選項時,create 選項將不起作用,因為舊日誌文件保留在原處。
關於
maxage
,我認為它對於例如在幾個輪換週期(天/週/月)內可能為空的日誌文件很有用 - 如果您使用notifempty
,空的日誌文件將不會被輪換,因此您可以保留太舊的輪換文件.