【Linux】 journalctlコマンドで過去のログを出力する設定をしてみた。

Linux

journalctlコマンド

ログの確認という話になると、よく出てくるコマンドです。オプションを使うと日付を指定することもできます。本記事ではデフォルトでは保存されないログの保管から、過去のログの呼び出しまでを詳しく検証しています。

書式

journalctl [オプション]

オプション

オプション説明
-a (–all)画面に表示できない文字も含めて表示する。
-b (–boot)システムの起動時のログを見る。正の場合は最古から数え、負の場合は最新から数える。
※以下の例と、検証で確認。
-b 1-> 最古のログ
-b 2 -> 1より1つ新しいログ(以降3,4,….)
-b -1 -> 前回起動時のログ
-b -2 -> 前々回起動時のログ(以降-3,-4…)
-D (–directory)指定したディレクトリのログを表示する。
-e (–pager-end)末尾を表示する。
-f (–follow)出力されたログを表示する(tailコマンドの-fと似ています)
-k (–dmesg)カーネルからのメッセージを表示する。
-l (–full)全てのログを表示する。
-n (–lines)出力する行数を指定する(headを用いなくても良くなります)
–no-pagerlessコマンドで出力されず、catコマンドのように全てを表示します。ぜひとも-nオプションを併用しましょう(ログが多いので)
-o (–output)ログの出力形式を指定する。詳細表示(verbose)や、jsonなどが指定できる。short-monotonicを指定すると、起動してからの経過時間で表示される。
-r (–reverse)最新のログから表示します(sortコマンドと同じように、順番を逆にするイメージです)
–since指定した日付以降のログを表示します。
–until指定した日付より前のログを表示します。
-u (–unit)指定したunitのログを表示します。
–vacuum-sice=サイズアーカイブのジャーナルが指定したサイズを下回るまで、古いジャーナルを削除します。
–vacuum-time=時間指定した期間より古いアーカイブジャーナルを削除します。
-x説明文付きで表示します。
–list–bootbootした履歴を表示する。

検証

検証1 –no-ppager

デフォルトではlessコマンドが使用されるので、–no-pagerを使用し、さらに表示する行数を3行に指定します。lessコマンドで表示されるのが嫌いな人向け。

検証2 ログの保管設定

ブート時のログを見ます。デフォルトの設定では、再起動をすると、起動時のログは削除されます。以下はログ保管に関する設定を行っていない場合の出力です。「ないよ!」ということで、怒られます。

ログを保管し、journalctlで見られるようにするためには、「/etc/systemd/journald.conf」を編集します。編集前のデフォルトの状態は以下の状態になっています。

ログの保存を有効化するには、「#Storage」のコメントアウトを削除し、パラメータを「persistent」にします。また、格納されるジャーナルファイルの大きさを制限するために、「RuntimeUse」のパラメータも「5G」に設定しておきます。(このあたりの容量は任意)

※systemd-journaldを再起動することで設定を有効化できます。

さて、検証ために、OSを2回再起動しました。

まずは日付の確認をします。

今回の起動分を含め、合計3回分(過去の分は2回分)保存されています。

上から順に古く、一番下に出力されているログが1番新しいログになります。
オプションでも説明していますが、新しいログから数える場合は負の数で指定します。上記の結果の一番左に「-2」や「-1」とあります。「0」が一番新しく、この負の数が絶対数が大きくなるほど、古いログにということになります。

※基本的には負の数で指定すればわかりやすいですが、古いログから数えたい場合は正の数で指定します。「journalctl –list-boots」で表示される番号をそのまま流用できる点では、負の数で指定したほうがわかりやすい気もしますが、一応確認しています。

負の数で指定

前々回起動時のログを見ます。「-b -2 」で指定します。

前回起動時のログを見ます。 「-b -1 」で指定します。

正の数で指定

最古のログを見ます。最古のログは、上記の「前々回の起動時のログ」と同じになるはずです。 「-b 1 」で指定します。

次に、最古のログより1つ新しいログを見ます。これは上記の「前回起動時のログ」と同じになります。 「-b 2 」で指定します。

今回起動した際のログを見ます。

ややこしいですが、基本的に負の数指定のほうが操作しやすいですね。

検証3 形式指定して出力する

形式を変更して出力します。まずは指定しない場合。

上記のログをjson形式で出力します。

すごくたくさん出てきた!といっても、one lineで出力されているからわかりにくいですよね。以下、整形した結果を載せておきます。

以下は「vernose -n 1」で詳細表示を出力させています。よく見ると以下のログをjson形式によく似ていますね。

すごいですね。たった1行のログですが、詳細表示にするとこの量になりました。

検証4 末尾から出力する

-eオプションを使うと、末尾から表示してくれます。

検証5 末尾から出力する

-rオプションを指定しても最新のログから表示してくれます。

検証6 日付指定をする

日付を指定します。以下は2021-01-21の12:00〜18:00を指定しています。

検証7 詳細表示をする

-xオプションで、説明をつけて表示します。結構便利です。トラブルシューティング時に活躍します。とはいえ、エラー発生時にログを見ても「つまり…このログの意味なんだろう?」ってことはよくありますね笑

タイトルとURLをコピーしました