Linux Logrotate 筆記

預期達成目標

  1. 希望限制在 5MB,未達就不管
  2. 希望每小時檢查一次

下列步驟一、步驟二 達成第 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

You Might Also Like

Leave a Reply

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料