据我了解,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
立即断开连接stdout
(exit status
干净)。netcat
连接到socket
,但不注册任何事件 - 我可以使用确实journalctl -f -n0
显示正在发生的事情的命令来确认这一点,而socket
输出为空。
答案1
在这种情况下你可以使用systemd-journal-remote
:
systemd-journal-remote
是接收序列化日志事件并将其存储到日志文件的命令。输入流位于 期刊导出格式,即类似于 的输出journalctl output=export
。对于通过网络传输,此序列化流通常通过 HTTPS 连接进行传输。