[server] systemd의 journalctl 패턴을 어떻게 사용합니까

journalctl의 패턴 일치 를 사용하려고합니다 SYSLOG_IDENTIFIERS. 예를 들어, 수많은 메시지가 태그되어 있습니다 sshd.

$ journalctl -t sshd | wc -l
987

그러나 패턴 일치를 사용하여 패턴을 찾으려면 :

$ journalctl -t 'ssh*'
-- No Entries --
$ journalctl -t 'ssh.*'
-- No Entries --

journalctl 매뉴얼 페이지에 패턴이 작동해야하지만 시스템에서 패턴이 사용 / 정의되는 방법에 대한 다른 내용은 찾을 수 없습니다.

$ man journalctl
....
-t, --identifier=SYSLOG_IDENTIFIER|PATTERN
       Show messages for the specified syslog identifier SYSLOG_IDENTIFIER,
       or for any of the messages with a "SYSLOG_IDENTIFIER" matched by PATTERN.

ArchLinux를 실행 중입니다.

$ journalctl --version
systemd 225
+PAM -AUDIT -SELINUX -IMA -APPARMOR +SMACK -SYSVINIT +UTMP +LIBCRYPTSETUP
+GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID -ELFUTILS +KMOD +IDN



답변

이것은 페이지 의 오타 가 업데이트 되었을 때 닫히는 문서 버그man 였습니다.

버그 보고서 는 코드에서 다음과 같은 주석으로 이어졌습니다 .

우리는 실제로 패턴을 받아들이지 않으므로 주장하지 않습니다.

이 문제를 해결하려면 grep질문에 대한 의견에서 제안한대로 사용할 수 있습니다 . 이 같은:

journalctl | grep sshd


답변

원래 질문 제목은 “systemd의 journalctl 패턴을 어떻게 사용합니까? “입니다. 이는 일반적인 정규 표현식 필터링이 아니라 “MATCHES”라는 저널 릭의 매우 특정한 기능을 나타냅니다.

“매치”기능은 맨 처음에 표시 되는 친숙한 매뉴얼 페이지에 다른 모든 기능과 함께 자세히 설명되어 있습니다 .

하나 이상의 일치 인수가 전달되면 그에 따라 출력이 필터링됩니다.

“일치”기능은 여러 가능한 필터를 기반으로 로그 항목을 필터링하기위한 것입니다.

원래 질문에있는 것과 같은 경우에는 이것이 내가하는 방법입니다 (ArchLinux도 실행합니다).

먼저 관심있는 서비스 이름을 알아야합니다. 일반적으로 다음과 같이합니다.

systemctl | grep sshd

나는 이것을 얻는다 :

sshd.service       loaded active running   OpenSSH Daemon

그런 다음 journalctl“systemd unit name”으로 다음과 같이 필터링 하도록 요청할 수 있습니다 .

journalctl _SYSTEMD_UNIT=sshd.service

“일치 필터링”이라고합니다. 그게 다야.

경우 원래의 질문은 “의미 대신에 기록 된 방법을 적용 할 grepjournalctl에 다음 중 하나를 적용 할 수 있습니다, 출력” grep“지금까지”저장된 로그를에

journalctl | grep ssh

또는 현재 들어오는 로그 항목을보고

journalctl -f | grep ssh

CTRL-C를 눌러 흐름을 중지하십시오. 물론보다 세밀한 규칙적인 패턴이나 여러 grep명령으로 더 복잡한 파이프를 사용할 수 있습니다 .


답변

실행할 때 단위 파일을 정의 할 수 있습니다 journalctl.

journalctl -f -u sshd.service

나는 ~의 일기 만 보여줄 것이다 sshd


답변