journalctl - systemdで起動したサービスのログを確認する

スポンサーリンク

journalctlコマンドはsystemdのjournalに問い合わせるコマンドになります。
journalはsystemdのログを管理するロギングサービスになります。
多くのサービスのログを確認できるため、うまく使いこなせれば、システムの動作の理解やシステムの不具合の原因調査等に利用できます。

スポンサーリンク

journalの全ての内容を古い順に表示(引数なし)

journalctlコマンドを引数なしで用いるとjournalで保存している全てのの内容を古い順に表示します。
表示内容はデフォルトではlessによって、表示されます。なので、画面幅によっては非表示になっている部分があり、その部分は矢印の左キーや右キーで確認することができます。

コマンド例と実行結果

画面幅が小さく、lessのようなページャが必要ない場合は、--no-pagerのオプションがあります。

 

 

 

フィールドのマッチングの条件に合うもの表示

journalctlコマンドの引数には、"フィールド=値"のようなものを指定でき、条件にマッチングしたものを表示できます。
同じフィールドを指定するとOR条件に、異なるフィールドを指定するとAND条件としてマッチングが行なわれます。
また、"+"の文字でOR条件としてマッチングが出来ます。

フィールドについては

で確認できます。フィールドの項目についてはjournalctlコマンドの--fieldsオプション

で確認することもできます。

出力形式を指定する-oオプションで、verbose,json,json-pretty等を利用すれば、フィールドと値が対応したような表示ができます。
例えば、verboseとjson-prettyに関しての表示は以下のような感じになります。

 

 

 

システムサービスとユーザーサービスの切り替え(--system/--userオプション)

--systemオプションでシステムサービスやカーネルのログを表示できます。
--userオプションでユーザーサービスのログを表示できます。
両方ともない指定がない場合はそのユーザーで確認できる可能な限りのログを確認できます。

コマンド例と実行結果

 

また、--userは-uのsystemdのユニットを指定する場合で影響があります。

myapp-sleep-print.serviceは独自のユーザーサービスになります。そのサービスの作成方法はsystemctlコマンドの記事を参照してください。

systemctl - systemdやサービスの制御を行う
systemctlコマンドはsystemdやサービスマネージャの状態を確認でき、制御を行うことができます。systemdはLinuxでのinitシステムの一つで、多くのLinuxディストリビューションではデフォルトで利用されています。sys...

 

 

 

ページャを末尾から表示(-eオプション)

-eオプションを用いるとページャが末尾から始まります。
つまり、基本的に最新のログがある画面でページャを開いてログを確認でき、上側に動かして古いログを確認できます。

コマンド例

 

 

 

最新のログから表示(-rオプション)

-rオプションを用いると最新ログから表示されます。
つまり、下に行くほど古いログになる新しい順になります。

コマンド例と実行結果

 

 

 

起動時からのログを表示(-bオプション)

-bオプションはマシンを起動してからのログを表示できます。フィールドの_BOOT_ID=の指定を簡単にしたものになります。

コマンド例と実行結果

-bオプションで-1を指定することで前回の起動からのログを確認でき、1を指定するとjournalに残っているもっとも古い起動ログになります。

-0:引数省略時のデフォルト、今の起動時でのログ
-1:前回の起動時でのログを表示
-2:前々回の起動時でのログを表示

2:もっとも古いものから2番目の起動時でのログ
1:もっとも古い起動時でのログ

 

 

 

時間を指定して表示(-S/-Uオプション)

-S(--since=)オプションや-U(--until=)オプションはログの時間を指定して表示することができます。

-Sオプションは指定した時間からのログを表示できます。
-Uオプションは指定した時間までのログを表示できます。

時間の指定は"2000-01-01 20:00:00"のように指定することができます。
時間を省略すると"00:00:00"として扱われ、秒の部分を省略すると":00"として扱われます。
日付を省略すると現在の日付として扱われます。

また、時間に関してはログの表示を-o short-fullにすると、時間の指定の仕方と一致して見やすくなります。

コマンド例と実行結果

'-'や'+'の記号を用いて今の時間から相対的な時間を指定することもできます。詳しい時間指定は

を参照してください。

コマンド例と実行結果

 

 

 

ユニットファイルを指定して表示(-uオプション)

-uオプションを用いるとユニットファイルを指定して表示できます。

コマンド例と実行結果

ユーザーサービスの場合は--userオプションを用いると指定できます。

 

 

 

ログレベルを指定して表示(-pオプション)

-pオプションはログレベルを指定して表示することができます。ログレベルはsyslog(3)に記述されている通りで指定する場合は以下の数値または文字列で指定できます。

0: "emerg"
1: "alert"
2: "crit"
3: "err"
4: "warning"
5: "notice"
6: "info"
7: "debug"

また、ログレベルを指定する方法として、"0..7"のように範囲を指定できます。

コマンド例と実行結果

また、-pオプションを利用しなくても、PRIORITY=を指定して同じような出力を行うことも可能です。

 

 

 

メッセージに正規表現を用いてマッチングしたものを表示(-gオプション)

-gオプションはメッセージを検索するオプションで、正規表現を用いて検索を行うことができます。
このオプションでの検索は大文字、小文字を区別しません。

コマンド例と実行結果

大文字、小文字を区別するかどうかは--case-sensitiveで制御できます。

 

 

 

カーネルメッセージを表示(-kオプション)

-kオプションを用いるとカーネルメッセージを表示できます。

コマンド例と実行結果

 

 

 

ログの表示方法を変更(-oオプション)

-oオプションを用いるとログの表示方法を変更できます。
以下の例は指定の仕方で表示の変更を行った1レコード分のログになり、一番最初の部分は-oオプションを用いなかった場合のログになります。
#の部分が指定の方法で、その次からの行がそのレコードになります。

-oオプションでの表示例

 

 

 

最新のログからn個のログを表示(-nオプション)

-nオプションはデフォルトでは最新のログから10個のログを表示します。数値を指定すると指定した個数分のログを表示します。

コマンド例と実行結果

 

 

 

最新のログから監視(-f, --followオプション)

-fオプションは最新のログから表示を行い、リアルタイムでログを監視できます。

コマンド例

また、--no-tailオプションを用いると全てのログを表示してから最新のログの監視になります。

 

 

 

journalファイルのディスク使用量を表示(--disk-usageオプション)

--disk-usageオプションは全てのアーカイブとアクティブなjournalファイルのディスク使用量を表示します。

コマンド例と実行結果

 

 

 

バキューム(アーカイブ化されたログを削除)(--vacuum-size/--vacuum-time/--vacuum-filesオプション)

--vacuum-sizeオプションはアーカイブ化されたログを指定したサイズまで削除しようと試みます。
--vacuum-timeオプションはアーカイブ化されたログを指定した期間より古いものを削除しようと試みます。
--vacuum-filesオプションはアーカイブ化されたログを指定した数以下になるように削除しようと試みます。

アクティブなログは削除されないため、指定したパラメータのログが削除されない場合があります。

コマンド例と実行結果

 

補足として、--rotateオプションと一緒に用いると現在のアクティブなjournalファイルをアーカイブ化してから、バキュームを行うことになり、バキュームの効果を最大限にできます。

 

 

 

内部ヘッダー情報を表示(--headerオプション)

--headerオプションはjournalの内容ではなく、journalの内部ヘッダー情報を表示できます。
例では、1レコード分の内部ヘッダー情報を見るためにawkコマンドを利用しています。

コマンド例と実行結果

 

 

 

参考

journalctl(freedesktop.orgのmanページ)