내가 이해한 바로 는 로깅 이벤트가 게시되는 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 연결을 통해 전송됩니다.