在我的机器(16.04.1)上,/dev/log 似乎丢失了。应该是一直不见了吧。
我在这里寻求帮助的真正原因是我正在使用带有 csf 的 virtualmin 并且该SYSLOG_CHECK
选项总是失败(即使操作系统仍然是 14.04 可信赖的)。
这是我运行记录器时发生的情况:
# logger hi there
logger: socket /dev/log: No such file or directory
根据这个问题,我还尝试了“python”的做事方式:
# python -c 'import syslog; syslog.syslog("Hello World")'
(nothing is outputted, or appears in syslog)
所以,看着/dev/
文件夹,我注意到那里根本没有“日志”。
我检查了另一台机器(v14.04),它有它:srw-rw-rw- 1 root root 0 Dec 16 20:34 log=
两台机器之间的主要区别在于,前者是从 vultr.com 启动的实例(使用他们提供的 cloud-init 感知安装),而后者使用 ubuntu ISO(很久以前)的机器(可以工作) )。
所以,对于这个问题:我该如何解决为什么我没有/dev/log
某个应用程序(csf)可能试图写入的文件的问题?请注意,还有其他消息出现在 中/var/log/syslog
,所以这对我来说有点混乱。
任何帮助表示赞赏。
编辑:
/lib/systemd/system/systemd-journald-dev-log.socket 的内容:
[Unit]
Description=Journal Socket (/dev/log)
Documentation=man:systemd-journald.service(8) man:journald.conf(5)
DefaultDependencies=no
Before=sockets.target
IgnoreOnIsolate=yes
[Socket]
Service=systemd-journald.service
ListenDatagram=/run/systemd/journal/dev-log
Symlinks=/dev/log
SocketMode=0666
PassCredentials=yes
PassSecurity=yes
ReceiveBuffer=8M
SendBuffer=8M
检查你是否有
/run/systemd/journal/dev-log
;它应该是一个套接字:如果检查成功,那么您可以简单地从
/dev/log
to建立一个符号链接/run/systemd/journal/dev-log
:对我来说,这最终成为 rsyslog 中使用的 imuxsock 模块如何与 systemd 一起使用的问题。
在imuxsock 文档中,他们介绍了该模块应该如何为 systemd 工作。第 1 步是我看到问题的地方:
系统应该已经进入第 3 步并将默认路径更改为“/run/systemd/journal/syslog”,但它仍然是“/var/log”。这意味着 imuxsock 模块会尝试(并且有时会成功)在 /dev/log 处创建一个套接字,其中应该有由 systemd-journald-dev-log.socket 创建的符号链接。如果它无法创建真正的套接字,符号链接仍然会被删除。
该文档是rsyslog github 上报告的此问题的结果。如果您想跳过讨论并直接跳转到更改,请分别参见PR#1和PR#2。
我的解决方案是将 imuxsock 模块配置为使用 /etc/rsyslog.conf 中的 systemd 路径:
这似乎已经解决了我的问题,并且在这里听起来像是一个很好的解决方案,因为它可以解释为什么在您手动创建符号链接后它可能会再次消失。
如果您查看您的系统并且“/run/systemd/journal/syslog”不存在,请查看“syslog.socket”以查看它是否成功启动,因为它负责创建套接字。
可能是您的 rsyslog.service 版本没有将 syslog.service 定义为别名,因为 syslog.socket 尝试激活该服务时需要该别名。
值得我在嵌入式 Linux 版本上运行,所以它不是这里问题的完美复制,但它似乎足够相关,可以分享。
很简单,重启 systemd-journald.service 就可以了
sudo systemctl restart systemd-journald.service
您确定已安装 rsyslog 吗?就我而言,我必须安装 rsyslog 来解决 Ubuntu 16.04 中的问题:
请注意,即使在我安装 rsyslog 之前,我
/lib/systemd/system/systemd-journald-dev-log.socket
的内容也与您在帖子中显示的内容相同。