我遇到了 /var 空间不足的问题,尽管它似乎只在 5 gig 分区上分配了 2 gig 的文件。我确定问题是 /var/log/messages 已被删除,但仍由 rsyslog 打开,并且为 2.88 gigs。
我现在可以通过重新启动 rsyslog 来解决这个问题,从而释放 2.8 gig 文件以正确删除。但是,我想知道它是如何进入这种状态的。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
(以及许多其他日志文件),这是一个摘录:在它轮换文件之后,它告诉 rsyslog 通过运行来关闭旧的日志文件(你通过重新启动 rsyslog 所做的)
/usr/lib/rsyslog/rsyslog-rotate
,这会将 a 发送SIGHUP
到 rsyslogd。守护程序将在获取文件时关闭文件而SIGHUP
无需重新启动;请参阅rsyslogd(8) 的“信号”部分。利用
logrotate
手册页中的引用