我不小心删除了/ var / log / syslog,现在rsyslog不会logging任何东西

我不小心删除了/ var / log / syslog,认为系统会自动重新创build它(不)。

我使用了touch /var/log/syslog并重新启动了rsyslog,但系统仍然没有logging任何东西。 我也重新启动整个服务器无济于事。

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

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

我怎样才能让系统重新开始loginsyslog?

给未来读者的笔记

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

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

TLDR; 不要创build自己的文件。 删除系统日志,然后重新启动rsyslog(这将为您创build系统日志)。 问题解决了。

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

 # 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 

即使该文件已被删除,rsyslog正在使用的文件句柄可能仍然打开并正在写入。 lsof可以用来validation这个,如果你想知道日志的写入位置,还可以告诉你哪些文件是由进程打开的。 pidof rsyslogd | xargs lsof -p

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

重新创build文件

运行restorecon -v /yoursyslogdeletedfile

运行systemctl reload rsyslog