Cron
logrotate by size - 我需要更改 cron 嗎?
我目前的 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
每天執行多次,或者除非使用-f
or--force
選項。如果您想
logrotate
每小時而不是每天執行,您可以移動它:mv /etc/cron.daily/logrotate /etc/cron.hourly
自 3.8.1 以來,已有
maxsize
.size
和之間的區別在maxsize
這裡描述:
maxsize
尺寸
daily
甚至在額外指定的時間間隔( 、weekly
、monthly
或yearly
)之前,當日誌文件變得大於 size 字節時,它們也會輪換。相關size
選項類似,只是它與時間間隔選項互斥,它會導致日誌文件在不考慮上次輪換時間的情況下輪換。使用時maxsize
,會同時考慮日誌文件的大小和時間戳。這將使兩者都適合您的使用:
size
沒有任何間隔,maxsize
如果還需要間隔。logrotate
但是,這並沒有改變預設情況下僅每天執行的事實。該間隔適用於大多數情況,因為在大多數情況下,日誌增長所需的時間比一天長得多250M
。