logrotate 指定執行時間

未分類
因為會在 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)



就完成啦