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즉시 stdout( exit status깨끗하게) 연결을 끊습니다. netcat에 연결 socket하지만 이벤트를 등록하지 않음 - 출력이 비어 있는 journalctl -f -n0동안 무슨 일이 일어나고 있는지 보여주는 명령으로 이를 확인할 수 있습니다.socket

답변1

이 경우 다음을 사용할 수 있습니다.systemd-journal-remote:

systemd-journal-remote직렬화된 로그 이벤트를 수신하여 로그 파일에 저장하는 명령입니다. 입력 스트림은 다음 위치에 있습니다. 저널 내보내기 형식, 즉 journalctl output=export. 네트워크를 통한 전송의 경우 이 직렬화 스트림은 일반적으로 HTTPS 연결을 통해 전송됩니다.

관련 정보