/dev/log 丢失。我该如何解决?

cmr*_*rgo 7 command-line syslog virtualmin

在我的机器 (16.04.1) 上,似乎缺少 /dev/log。它可能一直不见了。

我在这里寻求帮助的真正原因是我将 virtualmin 与 csf 一起使用并且该SYSLOG_CHECK选项总是失败(即使操作系统仍然是 14.04 可信赖的)。

这是我运行记录器时发生的情况:

# logger hi there
logger: socket /dev/log: No such file or directory
Run Code Online (Sandbox Code Playgroud)

根据这个问题,我还尝试了“python”的做事方式:

# python -c 'import syslog; syslog.syslog("Hello World")'
(nothing is outputted, or appears in syslog)
Run Code Online (Sandbox Code Playgroud)

所以,看着/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 Code Online (Sandbox Code Playgroud)

Ale*_*exP 6

检查你是否有/run/systemd/journal/dev-log;它应该是一个套接字:

$ ls -l /run/systemd/journal/dev-log
srw-rw-rw- 1 root root 0 Dec 16 09:17 /run/systemd/journal/dev-log
Run Code Online (Sandbox Code Playgroud)

如果这检查出来,那么您可以简单地从/dev/logto 建立一个符号链接/run/systemd/journal/dev-log

sudo ln -s /run/systemd/journal/dev-log /dev/log
Run Code Online (Sandbox Code Playgroud)

  • 它不会在重新启动后继续存在,因为 `/dev` 是一个临时文件系统。在我的机器上,存在 `/dev/log` 并指向 `/run/systemd/journal/dev-log`。它应该在启动时由套接字服务文件 `/lib/systemd/system/systemd-journald-dev-log.socket` 自动创建。 (2认同)