Rsyslog
/var/log/messages 無限增長,因為 rsyslog 不會讓它被刪除
我遇到了 /var 空間不足的問題,儘管它似乎只在 5 gig 分區上分配了 2 gig 的文件。我確定問題是 /var/log/messages 已被刪除,但仍由 rsyslog 打開,並且為 2.88 gigs。
我現在可以通過重新啟動 rsyslog 來解決這個問題,從而釋放 2.8 gig 文件以正確刪除。但是,我想知道它是如何進入這種狀態的。rsyslog 不應該自動輪換文件以防止日誌無限增長嗎?我能做些什麼來防止這種情況在未來再次發生嗎?
這應該在許多發行版上工作的方式是通過 logrotate,它每天從 cron 或 systemd 計時器呼叫。Logrotate 查找其配置,例如,在
/etc/logrotate.d
. 例如,在 Debian 上,您會發現/etc/logrotate.d/rsyslog
旋轉/var/log/messages
(以及許多其他日誌文件),這是一個摘錄:/var/log/messages { rotate 4 weekly missingok notifempty compress delaycompress sharedscripts postrotate /usr/lib/rsyslog/rsyslog-rotate endscript }
在它輪換文件之後,它告訴 rsyslog 通過執行來關閉舊的日誌文件(你通過重新啟動 rsyslog 所做的)
/usr/lib/rsyslog/rsyslog-rotate
,這會將 a 發送SIGHUP
到 rsyslogd。守護程序將在獲取文件時關閉文件而SIGHUP
無需重新啟動;請參閱rsyslogd(8) 的“信號”部分。