Red Hat Training
A Red Hat training course is available for Red Hat Enterprise Linux
23.10.4. メッセージのフィルターリング
パラメーターを付けずに実行した journalctl
コマンドの出力は大規模なものになることが多いため、様々なフィルターリング方法を使うとユーザーのニーズに合った情報を抽出できます。
優先度によるフィルターリング
ログメッセージは、システム上の間違った動作を追跡するために使用されることがよくあります。特定のエントリーまたはより高い優先度のエントリーのみを表示するには、以下の構文を使用します。
journalctl
-p
priority
priority を、キーワード debug
(7)、info
(6)、notice
(5)、warning
(4)、err
(3)、crit
(2)、alert
(1)、または emerg
(0) のいずれか (または数字) に置き換えます。
例23.20 優先度によるフィルターリング
error もしくはそれ以上の優先度のエントリーのみを表示するには、以下を使用します。
journalctl
-p err
時間によるフィルターリング
現在のブートのログエントリーのみを表示するには、以下を入力します。
journalctl
-b
時折システムを再起動した場合は、-b
を指定していも journalctl
の出力が大幅に減りません。この場合は、時間ベースのフィルターリングの方が役に立ちます。
journalctl
--since
=value--until
=value
--since
および --until
を使用すると、指定した時間範囲内に作成されたログメッセージのみを表示できます。以下の例のように、日付や時刻の形式で、これらのオプションに 値 を渡すことができます。
例23.21 時間および優先度によるフィルターリング
フィルターリングオプションは組み合わせることで、特定のリクエストに沿って結果を絞り込むことができます。たとえば、warning またはそれ以上の優先度で、特定の時刻以降のメッセージのみを表示するには、以下を使用します。
journalctl
-p warning
--since="2013-3-16 23:59:59"
高度なフィルターリング
例23.19「詳細な journalctl 出力」 では、ログエントリーを特定し、フィルターリングに使用できるフィールドを一覧表示しています。systemd
が保存できるメタデータの完全な説明は、systemd.journal-fields(7)
man ページを参照してください。各ログメッセーに対するこのメタデータは、ユーザーが介入することなく収集されます。値は通常テキストベースですが、バイナリーの大きな値になることもあります。フィールドには複数の値がある場合もありますが、一般的ではありません。
指定されたフィールドで発生する一意の値を一覧表示するには、以下の構文を使用します。
journalctl
-F
fieldname
fieldname を関心のあるフィールド名に置き換えます。
特定条件のみに合致するログエントリーのみを表示するには、以下の構文を使用します。
journalctl
fieldname=value
fieldname をフィールド名に、value をそのフィールドに含まれる特定の値に置き換えます。そうすると、この条件に合致する行のみが返されます。
systemd
に保存されているメタデータフィールドはかなりの数になるので、関心のあるフィールド名そのものを忘れることがよくあります。名前が不確かな場合は、以下を入力します。
journalctl
そして、Tab キーを 2 回押します。これで、利用可能なフィールド名が一覧表示されます。コンテキストベースの Tab 補完入力はフィールド名で機能するので、フィールド名の明確な文字を入力して Tab を押すと、名前が自動的に完了します。同様に、フィールドから一意の値を一覧表示することもできます。タイプ:
journalctl
fieldname=
そして Tab を 2 回押します。これは、journalctl
-F
fieldname と同等の動作になります。
1 つのフィールドに複数の値を指定できます。
journalctl
fieldname=value1 fieldname=value2 ...
同一フィールドで 2 つの値を指定すると、2 つの値の論理 OR
演算が行われます。value1 または value2 に一致するエントリーが表示されます。
複数のフィールドと値の組み合わせを指定して、出力をさらにしぼり込むこともできます。
journalctl
fieldname1=value fieldname2=value ...
異なるフィールド名に対して 2 つの値を指定すると、値は論理 AND
で合算されます。エントリーが表示されるには、両方の条件を満たす必要があります。
+ 記号を使うと、複数のフィールドに対して複数の値の論理 OR
演算を行えます。
journalctl fieldname1=value + fieldname2=value ...
このコマンドは、両方の条件に合致するエントリーだけでなく、少なくとも条件の 1 つに合致するエントリーを返します。
例23.22 高度なフィルターリング
UID 70 のユーザーが avahi-daemon.service
または crond.service
で作成したエントリーを表示するには、以下のコマンドを使用します。
journalctl_UID=70
_SYSTEMD_UNIT=avahi-daemon.service
_SYSTEMD_UNIT=crond.service
_SYSTEMD_UNIT
フィールドに 2 つの値があるため、両方の結果が表示されますが、これは _UID=70
の条件に合致する場合のみです。これは単に (UID=70 and (avahi or cron)) と表すこともできます。
上記のフィルターリングをライブビューモードで適用して、特定のログエントリーグループにおける最新の変更を追跡することもできます。
journalctl
-f
fieldname=value ...