我目前正在运行 Debian 10.1 x64 问题几乎是在设置服务器后立即开始的。
有时我的系统似乎停止写入日志文件。如果我检查,/var/log
我可以看到大多数日志的大小为 0。如果我重新启动服务器,一切都会恢复正常,服务器正在使用所有日志文件。查看日期,似乎所有这些空日志文件都是在同一日期/时间创建的(现在是 11 月 4 日 00:00),所以我假设这可能是由 logrotate 引起的,但所有轮换日志的时间都不同,有时距离新文件的创建日期有几个小时的差距,这也看起来有点奇怪。我没有在 logrotate 配置中更改任何内容,并且在任何日志文件中都找不到任何可以帮助解决该问题的相关信息。这里有人知道这样的问题以及如何在不重新启动服务器的情况下解决它吗?
编辑:我进一步研究了这个问题,想弄清楚到底发生了什么,我发现确实是 logrotate 创建了新的日志文件,但系统并没有像我想象的那样停止写入日志。似乎在 logrotate 之后,系统正在写入*.log.1
旧日志,而不是新创建的日志。我以前从未见过这种情况,是我的系统出了问题还是 Debian 10 上的新问题?有什么办法可以改变这种情况吗?
答案1
这听起来像错误 900586(“systemd 服务文件更新中断了 logrotate”)。
检查其中是否/etc/logrotate.d
包含任何文件invoke-rc.d rsyslog rotate
并将其更改为/usr/lib/rsyslog/rsyslog-rotate
。
答案2
这不是典型行为,我有一台安装了 Debian 10 的计算机,但不会发生这种情况。发生这种情况的原因通常是有些进程打开了日志文件(即打开了文件的文件描述符),而当轮换文件时,文件描述符不会更新,进程会继续写入旧日志文件。我不知道为什么这种情况会发生在诸如等logrotate
普通日志文件上。syslog
auth.log
向 Debian 用户邮件列表查询可能是个好主意,您可能会在那里得到更多知识渊博的答案。如果失败,请提交错误报告logrotate
,软件包维护人员将查看情况。