Rsyslog

/var/log/messages 無限增長,因為 rsyslog 不會讓它被刪除

  • January 24, 2020

我遇到了 /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) 的“信號”部分

引用自:https://unix.stackexchange.com/questions/563921