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 ...