Cron
/var/lib/logrotate/status 獲取無效條目
我們看到我們
/var/lib/logrotate/status
得到了無效的條目,如下所示:saurabh@1236:~$ cat /var/lib/logrotate/status logrotate state -- version 2 "/var/log/syslog" 2018-3-13 "/var/log/auth.log" 2018-3-13 "/var/log/debug" 2018-3-13 "/var/log/lpr.log" 2018-3-13 "/var/log/user.log" 2018-3-13 "/var/log/mail.info" 2018-3-13 "/var/log/cron.log" 2018-3-13 og/messages" 2018-3-13 <=== Corrupted entry "/var/log/cron.log" 2018-3-13 "/var/log/messages" 2018-3-13
不知道這是如何以這種方式損壞的。它在 10/12 天后隨機發生。
我的猜測是,這可能是因為多個 crons 編輯了這個文件,這導致了這個問題,因為多個試圖編輯這個文件,但我不確定這可能是問題所在。為了測試我在最近添加的一個 cron 中添加了一些隨機延遲,如下所示:
*/10 * * * * root sleep $(expr $RANDOM \% 90); /usr/sbin/logrotate -f /etc/logrotate.d/myFile
對於具體的解決方案有什麼更好的建議嗎?
您的機器上有多個
logrotate
由 cron 作業執行的並發實例。使用的狀態文件沒有鎖定,因此不同的logrotate
作業在更新它時會“互相踩踏”。由於您在目錄中添加了
myFile
配置,因此您不必在單獨的 cron 作業中顯式輪換它們。通常的cron 作業執行會自動獲取該配置。logrotate``/etc/logrotate.d``logrotate
如果您需要比系統的預設日誌輪換更頻繁地執行輪換,我建議將
myFile
配置放在其他位置。要確保您的輪換作業不使用相同的狀態文件(在輪換作業可能與系統的日誌輪換作業同時執行的情況下),請使用另一個狀態文件:
/usr/sbin/logrotate -f -s /some/location/myFile.state /some/location/myFile
請注意,該作業不需要以 root 身份執行,除非日誌文件由 root 或您以外的某個使用者擁有。換句話說,如果日誌文件屬於您,您可以在個人 cron 作業中進行輪換。