Logging
如何按程序名稱過濾 journalctl 輸出?
當一個程序登錄到 systemd 時,它的程序名稱被記錄下來並作為標識符顯示在 journalctl 輸出中。
$ systemd-cat echo "test" $ journalctl -f -- Logs begin at Sat 2018-02-24 12:13:24 CET. -- ... Jul 25 13:52:26 mycomputer echo[25098]: test
但是,過濾該名稱似乎不起作用。
$ journalctl -f -t echo -- Logs begin at Sat 2018-02-24 12:13:24 CET. -- $ journalctl -f -u echo -- Logs begin at Sat 2018-02-24 12:13:24 CET. --
當我手動指定標識符時,將顯示標識符而不是程序名稱,並且過濾有效。
$ systemd-cat -t myapp echo "test" $ journalctl -f -- Logs begin at Sat 2018-02-24 12:13:24 CET. -- Jul 25 13:56:08 mycomputer myapp[25213]: test $ journalctl -f -t myapp -- Logs begin at Sat 2018-02-24 12:13:24 CET. -- Jul 25 13:56:08 mycomputer myapp[25213]: test
如何過濾程序名稱的 journalctl 輸出?
剛剛想通了。您可以通過指定使用任何systemd 日誌欄位作為過濾器
<FIELD_NAME>=<VALUE>
。以下欄位對此問題很有用:
_COMM=, _EXE=, _CMDLINE=
日誌條目源自的程序的名稱、可執行路徑和命令行。
因此,為了過濾命令名稱,請使用
journalctl -f _COMM=<command-name>
$ journalctl -f _COMM=echo -- Logs begin at Sat 2018-02-24 12:13:24 CET. -- Jul 25 13:52:26 mycomputer echo[25098]: test Jul 25 13:56:08 mycomputer myapp[25213]: test