Logrotate

為什麼我們應該一起使用 create 和 copytruncate ?

  • November 25, 2019

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,空的日誌文件將不會被輪換,因此您可以保留太舊的輪換文件.

引用自:https://unix.stackexchange.com/questions/33447