systemdのjournalctlパターンをどのように使用しますか


21

journalctlパターンマッチングを使用しようとしていますSYSLOG_IDENTIFIERS。例として、タグ付けされた大量のメッセージがありますsshd

$ journalctl -t sshd | wc -l
987

しかし、パターンマッチングを使用してそれらを見つけようとすると:

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

journalctlのmanページには、パターンが機能するはずであると書かれていますが、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

5
IRCでの議論に基づくと、これはバグ(またはドキュメントの問題)のようです。バグが報告されまし
マークグライムズ

1
リアルタイムでこれを試してください:journalctl -f | grep sshd
nexoma

必要に応じて、実際に複数の-t <identifier>を追加できます。
sivann

回答:


15

これは、ページのタイプミスが更新されたときに閉じられたドキュメントのバグでしたman

バグレポートは、コード内で次のコメントを導きました。

私たちは実際にパターンを受け入れないので、それを主張しないでください。

回避策として、grep質問へのコメントで提案されているとおりに使用できる場合があります。このようなもの:

journalctl | grep sshd

0

元の質問のタイトルは、「systemdのjournalctlパターンをどのように使用しますか」です。これは、一般的な正規表現フィルタリングではなく、「MATCHES」と呼ばれるjournalctlの非常に特殊な機能を指します。

「MATCHES」機能は、他のすべての機能とともに、その最初の部分に記載されているわかりやすいマニュアルページで詳細に説明されています。

1つ以上の一致引数が渡されると、それに応じて出力がフィルタリングされます。

「一致」機能は、考えられる多数のフィルターに基づいてログエントリをフィルターすることを目的としています。

元の質問のようなケースでは、これが私が行う方法です(ArchLinuxも実行しています)。

最初に、興味のあるサービス名を知る必要があります。私は通常これを行います:

systemctl | grep sshd

私はこれを得る:

sshd.service       loaded active running   OpenSSH Daemon

次に、次のようjournalctlに「systemdユニット名」でフィルタリングするように依頼できます。

journalctl _SYSTEMD_UNIT=sshd.service

「一致フィルタリング」と呼ばれます。それだろう。

元の質問が「journalctl出力に適用grepする方法」を意味するように書かれている場合、grep「これまで」に保存されたログに適用することができます

journalctl | grep ssh

または、現在受信しているログエントリを見て

journalctl -f | grep ssh

CTRL-Cを押してフローを停止します。もちろん、きめの細かい通常のパターンまたは複数のgrepコマンドを使用して、より複雑なパイプを使用できます。


回答ありがとうございます。ただし、_SYTEMD_UNITはパターンを受け入れません。私のコメントと@Timの回答で述べたように、これはドキュメントのバグでした。
マークグライムス

@MarkGrimes、少なくとも私(systemd 239)には機能します。私はそれを書き留める前に、私が言うことを常にテストします。文書通りに機能します。
EnzoR

たとえば、パターンの使用に関する質問ですssh*。journalctlのドキュメントは、これは一度に可能であったと述べました。ドキュメントは不正確であり、更新されています。
マークグライムス

@MarkGrimes質問はsystemdのjournalctlパターンに関するもので、文字パターンではありません。更新された回答をご覧ください。また、文書化されているとおりにArchLinuxで動作します。
EnzoR

-2

実行時にユニットファイルを定義できますjournalctl

journalctl -f -u sshd.service

のジャーナルのみを表示します sshd


この答えは質問に対応していません。ユーザーがフィルターでパターンを使用するように求めています。
Merlijn Sebrechts
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.