Cron

logrotate by size - 我需要更改 cron 嗎?

  • May 19, 2017

我目前的 logrotate 配置如下所示(使用 logrotate 3.8.7)

"/var/log/haproxy.log" {
 daily
 size 250M
 rotate 1
 create 644 root root
 missingok
 compress
 notifempty
 copytruncate
}

它每天成功執行一次,但是當大小超過 250M 時它不會旋轉。所以它一直等到一天結束才旋轉,無論大小。

我讀過有 maxsize 選項,但更改後size 250M仍然maxsize 250M無法正常工作。

我是否需要設置一個 cron 以每小時一次的方式執行 logrotate,或者 logrotate 會自動執行,因為正在監聽該文件大小,而我還有其他問題?

是的,您需要logrotate每天執行不止一次才能實現這一目標。logrotate這在手冊頁(8)的第二段中得到了回答:

通常,logrotate作為每日 cron 作業執行。它不會在一天內多次修改日誌,除非該日誌的標準基於日誌的大小並且logrotate每天執行多次,或者除非使用-for--force選項。

如果您想logrotate每小時而不是每天執行,您可以移動它:

mv /etc/cron.daily/logrotate /etc/cron.hourly

自 3.8.1 以來,已有maxsize. size和之間的區別在maxsize這裡描述:

maxsize尺寸

daily甚至在額外指定的時間間隔( 、weeklymonthlyyearly)之前,當日誌文件變得大於 size 字節時,它們也會輪換。相關size選項類似,只是它與時間間隔選項互斥,它會導致日誌文件在不考慮上次輪換時間的情況下輪換。使用時 maxsize,會同時考慮日誌文件的大小和時間戳。

這將使兩者都適合您的使用:size沒有任何間隔,maxsize如果還需要間隔。logrotate但是,這並沒有改變預設情況下僅每天執行的事實。該間隔適用於大多數情況,因為在大多數情況下,日誌增長所需的時間比一天長得多250M

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