Linux Logrotate 筆記
預期達成目標
- 希望限制在 5MB,未達就不管
- 希望每小時檢查一次
下列步驟一、步驟二 達成第 1 點,而步驟三則是達成第 2 點。
步驟一 確定有裝 cron 跟 Logrotate
例如像我是在 Docker 跑的 ubuntu ,那就可能沒裝 cron,
沒安裝的人,使用以下指令安裝 (CentOS 或其他 Linux 的人自己去查安裝指令吧XD 我懶得查)
$ apt-get update && apt-get -y install cron logrotated
步驟二 編輯 /etc/logrotate.d/your_setting
your_setting 是你的檔名,這個可以隨意取,因為在 logrotate.d 下的所有設定都會被執行,所以檔名隨你開心。
/path/to/log/your.log { rotate 30 # 最多30份 missingok # 允許上面的 your.log 不存在 maxsize 5M # 超過 5MB 就 rotate notifempty # 允許 your.log 空白 copytruncate # 複製一份副本後,再清空原本 your.log () dateext # rotate 的延伸檔名格式為日期 dateformat -%Y%m%d%H%M%S # rotate 的延伸檔名格式 }
copytruncate: 有的應用程式、套件輸出 log 的方式可能會咬死原本檔案,所以不能動本來的檔案,此時要設定成這個模式才能順利輪替。推薦可以參考這篇 logrotate机制和原理。
步驟三 複製一個重要的系統設定
我們的期望是每小時都要檢查,不過預設 logrotate 最小的檢查單位是 天,相關工作寫在 /etc/cron.daily/logrotate。
因此,要啟動小時也很簡單,你就把原本寫在『天』的 logrotate 設定複製到『小時』那邊即可,範例如下,把原本在 cron.daily/ 的 logrotate script 複製一份到 cron.hourly/
$ cp /etc/cron.daily/logrotate /etc/cron.hourly/logrotate
步驟四 啟動 cron
執行啟動指令
$ service cron start
Leave a Reply