logrotate 指定執行時間
2015 Aug 10 未分類
因為會在 pi 上跑一些程式/寫 log 檔
所以有用 logrotate 去做把 log 截斷的動作
最近因為變更了程式執行的時間
而 logrotate 又剛好在程式寫 log 檔的期間
產生了 logrotate 變更了原本的檔案名
但我的程式仍然繼續寫變更過的 log 檔案
導致新的那個 log 檔其實是空的
今天的資料都寫到備份的那個檔案去了
google 了一下發現
可以用 root 編輯這個檔案
/etc/crontab
內容如下
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
可以發現 每日定期執行的 cron 在早上6點執行
然後再看
/etc/cron.daily/logrotate
內容如下
#!/bin/sh
test -x /usr/sbin/logrotate || exit 0
/usr/sbin/logrotate /etc/logrotate.conf
cron.daily 又去把 logrotate 叫起來
所以 logrotate 也是6點執行(正確的說是6:25)
只要把小時的位置0(6改成0) 就會在午夜12:00執行
如果你有想指定的時間
也可以改成你要執行的時間
存檔之後就ok了
如果你的 daily cron 有跑別的
但你不想變更其他 daily cron job 的時間
那就把 /etc/cron.daily/logrotate 砍掉
然後自己在 /etc/crontab 寫以下內容
0 0 * * * root /usr/sbin/logrotate /etc/logrotate.conf
時間可以自定(上面的範例是午夜12:00)
就完成啦