Linux

如果在 logrotate 的情況下定義了 size 參數,ifempty 和 notifempty 如何工作?

  • January 6, 2022

假設我有這樣的 logrotate 命令

/a/b/file.log{
size 5M 
ifempty
}

現在 logrotate 在大小應大於 5MB 的條件下工作,然後 logrotate 將開始為該文件工作。但是在這種情況下 ifempty 將如何工作?在這種情況下,優先級是什麼?那notifempty的情況呢?

在此設置中:

  • size 5M指示logrotate僅在日誌文件大於 5MB 時輪換日誌文件;
  • ifempty``logrotate即使日誌文件為空也會發出指示(預設情況下啟用)。

這些指令可能會出現衝突:第一個指令將排除 0 字節文件,但第二個指令將包含該文件。

在實踐中發生的情況是ifempty對文件選擇沒有明確的影響;重要的“空”設置與之相反,notifempty如果日誌文件為空,則在所有情況下都禁用輪換。ifempty存在,以便在notifempty全域設置時可以為特定配置恢復預設行為。

另一種思考方式是ifempty/notifempty不選擇文件,它們僅確定在應用了所有其他條件後考慮輪換空日誌文件時會發生什麼。如果ifempty設置(同樣,這是預設設置),空日誌文件會被輪換;如果notifempty已設置,則不是。

根據您的配置,只有大於 5MB 的日誌文件才會輪換。

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