Linux
如何設置 logrotate 以每小時輪換一次日誌?
根據 Unix and Linux Administration Handbook and
man
, logrotate 有daily
,weekly
, and的選項monthly
,但是有沒有辦法添加一個hourly
選項?This blog post提到您可以設置
size 1
和刪除時間選項(例如:),daily
然後手動呼叫- 我想像logrotate``cron
logrotate -f /etc/logrotate.d/my-hourly-file
但是對於每小時旋轉日誌有沒有更優雅的解決方案?
取決於您的作業系統。一些(全部?)Linux 發行版有一個目錄
/etc/cron.hourly
,您可以在其中放置每小時執行的 cron 作業。其他人有一個目錄
/etc/cron.d/
。在那裡,您可以使用 crontab 條目的正常 cron 設置將要作為任何特殊使用者執行的 cron 作業(並且您必須指定使用者名)。如果您使用其中任何一個而不是標準日誌輪換腳本,
/etc/cron.daily/
您應該將該腳本複製cp /dev/null
到原始位置。否則它將通過 logrotate 更新檔更新重新啟動。對於適當的每小時輪換,還要注意沒有
dateext
設置指令。如果是這樣,預設情況下,第一個旋轉文件將獲得目前日期的副檔名,如 YYYYMMDD。然後,第二次 logrotate 將在同一天內啟動,即使已超過門檻值,它也會簡單地跳過輪換。size
原因是要旋轉的文件的新名稱已經存在,並且 logrotate 不會將內容附加到現有的舊文件中。例如在 RHEL 和 CentOS 上,該
dateext
指令預設在/etc/logrotate.conf
. 在刪除或註釋該行之後,旋轉的文件將簡單地獲得一個執行編號作為副檔名,直到達到該rotate
值。這樣,一天就可以進行多次輪換。