我不小心删除了/ 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