之前就很好奇為什麼只要指定到 var log 下的檔案就會自己拆分,後來才知道原來是 server 固定時間會跑 logrotate 這個指令,理解這個指令對管理自己的 log 檔案有非常大的幫助。
常用參數
- daily | weekly | monthy 更新頻率
- dateext 檔案補上 rotate 的日期
- missingok 如果找不到 log 檔沒關係
- rotate 4 表示保留 4 份檔案
- compress 表示壓縮起來,預設用 gzip
- delaycompress 表示延後壓縮直到下一次 rotate
- ifempty 即使是空文件也轉儲,這個是 logrotate 的預設值
- notifempty 如果是空文件的話不做動
- copytruncate 採用複製一份再清空原本的 Log File,滿足某些服務無法直接更名 Log File 來實現 Rotate 功能
- size size 當日誌文件到達指定的大小時才做動,bytes(預設值)及 KB 或 MB
test.conf
/var/www/test/log/*.log {
daily
rotate 4
missingok
dateext
size 10
}
我在 /var/www/test/log
裡面建立了一個 a.log
,檔案大小為 43k,然後執行 logrotate -v test.conf
,得到了 a.log-20180709
這個檔案,表示切割已經成功了。
可以把配置放到 /etc/logrotate.d/
目錄下,crontab 會每天執行 logrotate 的工作,該工作會掃描這個資料夾,因此你的配置就會被執行,相關執行時間可以查 /etc/crontab
,如果你想要特定時間獨立執行這個配置的話,就是放在一個指定的位置,然後自己加到 crontab 裡面。
詳細的使用參數可以參考 logrotate 的設定翻譯。
注意
若要使用 script 做後續處理,有設定壓縮檔案的話建議使用 lastaction/endscript,才會真正等到檔案壓縮完成後處理內容。
沒有留言:
張貼留言