如何读取systemd-journald.socket?

如何读取systemd-journald.socket?

据我了解,systemd-journald创建了两个sockets,在其中发布其日志记录事件。

# systemctl cat systemd-journald.socket | egrep -v '^ *#'

[Unit]
Description=Journal Socket
Documentation=man:systemd-journald.service(8) man:journald.conf(5)
DefaultDependencies=no
Before=sockets.target

IgnoreOnIsolate=yes

[Socket]
ListenStream=/run/systemd/journal/stdout
ListenDatagram=/run/systemd/journal/socket
SocketMode=0666
PassCredentials=yes
PassSecurity=yes
ReceiveBuffer=8M
Service=systemd-journald.service

那么我怎样才能阅读这些事件呢?我试过:

# netcat -U /run/systemd/journal/stdout
# echo $?
0
# netcat -uU /run/systemd/journal/socket

netcat立即断开连接stdoutexit status干净)。netcat连接到socket,但不注册任何事件 - 我可以使用确实journalctl -f -n0显示正在发生的事情的命令来确认这一点,而socket输出为空。

答案1

在这种情况下你可以使用systemd-journal-remote

systemd-journal-remote是接收序列化日志事件并将其存储到日志文件的命令。输入流位于 期刊导出格式,即类似于 的输出journalctl output=export。对于通过网络传输,此序列化流通常通过 HTTPS 连接进行传输。

相关内容