Logrotate
Logrotate 失敗且沒有錯誤
好的,我做了一個噓聲。我認為
問題: Logrotate 失敗(或者我錯誤地認為它已經死了)並且沒有提供任何錯誤消息來解釋原因:
● logrotate.service - Rotate log files Loaded: loaded (/lib/systemd/system/logrotate.service; static; vendor preset: enabled) Active: inactive (dead) since Fri 2021-12-31 13:05:25 CST; 42min ago Docs: man:logrotate(8) man:logrotate.conf(5) Process: 27844 ExecStart=/usr/sbin/logrotate /etc/logrotate.conf (code=exited, status=0/SUCCESS) Main PID: 27844 (code=exited, status=0/SUCCESS) Dec 31 13:05:25 server1.example.com systemd[1]: Starting Rotate log files... Dec 31 13:05:25 server1.example.com systemd[1]: logrotate.service: Succeeded. Dec 31 13:05:25 server1.example.com systemd[1]: Started Rotate log files.
我想使用 systemd 自動重新啟動 logrotate,因為有時它會在重新啟動後失敗。因此在我的
/usr/lib/systemd/system/logrotate.service
文件中我添加了:
Restart=always
上面添加了kill logrotate服務。從那裡我決定撤消我的骯髒工作並刪除
Restart=always
和systemctl daemon-reload && systemctl start logrotate
沒運氣。
然後我決定調查系統日誌,看看是否能找到任何線索,使用:
#grep "logrotate" /var/log/syslog
。這產生了一個線索:Dec 31 00:00:03 server1 systemd[1]: logrotate.service: Succeeded. Dec 31 00:36:16 server1 clamd[3544]: Fri Dec 31 00:36:16 2021 -> ^File path check failure on: /var/tmp/systemd-private-2f8e6be5a16040adb29706b9e31ae841-logrotate.service-DbrlAK Dec 31 00:37:31 server1 systemd[1]: logrotate.service: Succeeded. Dec 31 12:51:17 server1 systemd[1]: logrotate.service: Succeeded. Dec 31 13:00:58 server1 systemd[1]: logrotate.service: Succeeded. Dec 31 13:05:25 server1 systemd[1]: logrotate.service: Succeeded.
注意:您看到“成功”的所有時間都是我手動嘗試啟動 logrotate。
我在這篇關於伺服器故障的文章中讀到,這可能是由於 logrotate 試圖訪問
var/log/
目錄之外的日誌而引起的。/var/log
而且我雖然這可能是我的問題,但是除了上面的系統日誌錯誤之外,我找不到任何外部日誌的指示:重申:
Dec 31 00:36:16 server1 clamd[3544]: Fri Dec 31 00:36:16 2021 -> ^File path check failure on: /var/tmp/systemd-private-2f8e6be5a16040adb29706b9e31ae841-logrotate.service-DbrlAK
從我調查蛤蜊,但是
#grep "log" /etc/clamav/clamd.conf LogSyslog false LogFile /var/log/clamav/clamav.log
收益,什麼都沒有。有誰知道為什麼 logrotate 不會啟動?
logrotate.service
應該是不活動的。它不作為守護程序執行,而是由logrotate.timer
, check定期觸發systemctl status logrotate.timer
。