我意外删除了 /var/log/syslog,现在 rsyslog 不会记录任何内容

我意外删除了 /var/log/syslog,现在 rsyslog 不会记录任何内容

我不小心删除了 /var/log/syslog,以为系统会自动重新创建它(但没有)。

我使用touch /var/log/syslog并重新启动了 rsyslog,但系统仍然没有记录任何内容。我还重新启动了整个服务器,但无济于事。

的输出 ls -l /var/log/syslog

-rwxrwxr-x 1 root root 0 Oct 27 13:16 syslog

我怎样才能让系统再次开始记录系统日志?

致未来读者的说明

重新启动 rsyslog 确实解决了这个问题。第一次没有用是因为我使用 创建了文件“syslog” touch /var/log/syslog

解决方案是删除/var/log/syslog。然后运行sudo service rsyslog restart

TLDR;不要自己创建文件。删除 syslog,然后重新启动 rsyslog(它将为您创建 syslog)。问题解决了。

答案1

rsyslog 应该在重新启动后重新创建该文件(具有正确的权限):

# mv /var/log/syslog /tmp/

# /etc/init.d/rsyslog restart
[ ok ] Restarting rsyslog (via systemctl): rsyslog.service.

# dir /var/log/syslog
-rw-r----- 1 root adm 327 Oct 27 13:28 /var/log/syslog

也许尝试强制日志条目以确保它正在运行:

# /usr/bin/logger -p0 foo
# tail /var/log/syslog
...
Oct 27 13:31:39 myserver root: foo

答案2

即使文件已被删除,rsyslog 使用的文件句柄可能仍然打开并正在写入。lsof可以用来验证这一点,如果您想查看日志写入的位置,还可以告诉您该进程打开了哪些文件。pidof rsyslogd | xargs lsof -p

答案3

这可能是 SELinux 的问题。当您触摸文件时,您会创建一个与日志元素所需的 MAC 权限不兼容的 MAC 标签。允许启动创建文件会附加正确的 MAC 标签。即使您更改了文件权限 (DAC),您仍然可能会遇到问题。

答案4

重新创建文件

跑步restorecon -v /yoursyslogdeletedfile

跑步systemctl reload rsyslog

相关内容