Systemd

你如何使用 systemd 的 journalctl 模式

  • March 11, 2022

我正在嘗試journalctlSYSLOG_IDENTIFIERS. 例如,我有大量標記的消息sshd

$ journalctl -t sshd | wc -l
987

但是如果我嘗試使用模式匹配來找到它們:

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

journalctl 手冊頁說模式應該可以工作,但我找不到其他關於如何在 systemd 中使用/定義模式的資訊。

$ 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

journalctl -v 239 支持過濾-g

journactl 手冊頁

   -g, --grep=
       Filter output to entries where the MESSAGE= field matches the
       specified regular expression. PERL-compatible regular
       expressions are used, see pcre2pattern(3) for a detailed
       description of the syntax.

       If the pattern is all lowercase, matching is case
       insensitive. Otherwise, matching is case sensitive. This can
       be overridden with the --case-sensitive option, see below.

引用自:https://serverfault.com/questions/721963