journalctlでLinuxエラーを確認する方法|前回起動・サービス・期間指定
journalctlでLinuxのエラーを調べるときに、現在・前回起動、特定サービス、期間、priorityを分けて確認する手順を整理します。
このページの目的
journalctlのオプションを暗記するのではなく、障害発生時に「どのboot・どのUnit・どの時間帯」を見るかを順番に決めます。
最初にやること
まず現在のbootをjournalctl -bで確認し、必要に応じて-u・-p・--sinceで範囲を狭めます。再起動前の障害なら-b -1を使います。
関連するLinux障害調査ガイド
df・du・inodeでディスク使用量を確認
対象ファイルシステムを特定し、容量・inode・使用箇所を安全に絞ります。
容量を確認 → トラブルNo space left on deviceを切り分ける
ENOSPC発生後に容量・inode・削除済みオープンファイルなどを順番に確認します。
原因を切り分ける → journal容量管理journalctlの容量確認・削減
ログの内容ではなく、disk-usage・vacuum・保存上限を確認したい場合はこちら。
容量管理の手順へ →最短の確認順
原因不明のLinux障害で、まずjournalを広く確認する場合は「現在の起動」「特定サービス」「前回起動」の順に範囲を狭めます。エラーだけに絞る前に、前後の文脈も確認できる状態を残します。
-p errだけで原因を確定しない:priorityがwarning/infoでも原因につながる記録があります。エラー行が見つかったら、その時刻前後や対象Unitのログへ広げて確認します。現在の起動を確認する
-bは現在のbootを対象にします。-p errを1つ指定した場合は、errとそれより重要度が高いpriorityのメッセージに絞られます。
前回起動を確認する
-b -1は1つ前のbootを指定します。再起動前に障害が起きた場合の確認に向いています。ただし、journalが永続保存されていない環境では前回bootのログが残っていない場合があります。
journalctl -b -1 -p errは「前回起動+err以上」を同時に絞るコマンドです。再起動後の事後調査では便利ですが、これだけで調査を終えず前後のログも確認します。特定サービスを確認する
-uは指定したsystemd Unitに関連するjournalを絞ります。サービス起動失敗なら、statusの抜粋だけでなくjournal側の前後行を確認します。
期間を絞る
--sinceと--untilで時間帯を限定できます。監視アラートやユーザー報告の発生時刻が分かる場合は、最初から期間を絞るとノイズを減らせます。
priorityを絞る
| 指定例 | 使いどころ | 注意 |
|---|---|---|
-p err | err以上を素早く確認 | warning/infoの原因候補は除外される |
-p warning | warning以上まで広げる | 件数が増えるのでUnit・期間と併用 |
-p warning..err | priority範囲を明示 | 必要なレベルを意図して選ぶ |
リアルタイムで追う
-fは新しいjournalエントリを継続表示します。再現試験と組み合わせるときに使います。本番で何度も再現操作を行う前に、操作の影響を確認してください。
ログが見えないときの注意
- 一般ユーザーでは参照できるjournalが制限される場合があります。
- 前回bootが見えない場合は、journalの保存方式や保持期間を確認します。
- コンテナ内、chroot、リモートjournalなどでは対象範囲が異なります。
journalctl -xeは末尾へ移動し説明文を付加できますが、「現在bootのエラーだけ」を意味するコマンドではありません。調査条件を明示した-b・-u・-pを優先すると再現性が上がります。
journalctlがない・既存syslog運用の環境
systemd-journaldを中心に使わない環境や、既存の運用手順では、テキストログを直接確認する場合があります。ディストリビューションやrsyslog/syslog-ngの設定によって保存先は異なるため、ファイルが存在することを確認してから使います。
| 用途 | journal中心の確認 | 既存環境で見かける確認 |
|---|---|---|
| OS・サービス全般 | journalctl -b | tail -n 200 /var/log/messagestail -n 200 /var/log/syslog |
| 認証・SSH周辺 | journalctl -u sshd -b | tail -n 200 /var/log/securetail -n 200 /var/log/auth.log |
| 文字列で絞る | journalctl -b | grep -i error | grep -i error /var/log/messages |
/var/log/messagesや/var/log/syslogを併用していることがあります。「新しいOSだからファイルログはない」と決めつけず、実環境の保存方式を確認します。確認結果から次へ進む
| 見つかった内容 | 次の確認 |
|---|---|
| Unitの起動失敗 | systemd起動失敗ガイドでUnit・実行パス・権限を確認 |
| cron関連の記録 | cronログ確認でcron固有の実行記録へ |
| 容量不足・ENOSPC | No space left on deviceへ |
| 時刻だけ分かるが原因不明 | 同時刻のUnit・kernel・アプリログを相互に確認 |