Linuxサーバーを運用していると、「サービスが起動しない」「突然エラーが発生した」といったトラブルに遭遇することがあります。
そんなとき、原因を調べるために確認するのがログです。
systemdを採用しているLinuxでは、journalctlコマンドを使って、システムやサービスが記録したログを確認できます。
私もLinuxサーバーの運用・保守をしている中で、サービスの状態確認や障害調査などでjournalctlを使うことがあります。
ただ、journalctlには多くのオプションがあるため、最初からすべて覚えようとすると少し大変です。
この記事では、journalctlの基本的な使い方から、実際にログを調べるときによく使う絞り込み方法まで紹介します。
journalctlとは
journalctlは、systemdの「systemd-journald」が収集したログ(Journal)を確認するためのコマンドです。
Linuxでは、システムの動作やサービスの起動・停止、エラーなど、さまざまな情報がログとして記録されています。
journalctlを使えば、それらのログをコマンドラインから確認できます。
たとえば、次のような場面で使います。
- サービスが正常に起動しない
- サービスが突然停止した
- サーバーでエラーが発生した
- 再起動後に問題が発生した
- 特定の時間帯に何が起きていたのか確認したい
journalctlは単純にすべてのログを表示するだけでなく、「特定のサービス」「特定の時間帯」「エラー以上」といった条件を指定して絞り込めるのが便利なところです。
ログはかなりの量になることもあるので、実際の調査では必要なログだけに絞って確認することが多いと思います。
journalctlでログを確認する基本的な使い方
まずは基本的な使い方から見ていきます。
すべてのログを表示する
journalctlをオプションなしで実行すると、Journalに保存されているログを表示できます。
journalctl
環境によっては大量のログが表示されるため、実際の障害調査では、このまま使うよりも後述するオプションで対象を絞った方が確認しやすいです。
また、ユーザーの権限によって確認できるログが制限されることもあります。
必要に応じてsudoを付けて実行します。
sudo journalctl
最新のログを指定した件数だけ表示する
直近のログだけを確認したい場合は、-nオプションを使います。
たとえば、最新の50件を表示する場合は次のように実行します。
journalctl -n 50
障害が発生した直後など、「まず最近のログを確認してみたい」というときに使いやすいコマンドです。
特定のサービスのログを確認する
サーバー運用では、すべてのログを見るよりも、問題が発生しているサービスに絞って確認した方が原因を探しやすくなります。
特定のsystemd Unitに関するログを表示するには、-u(--unit)オプションを使います。
たとえば、SSHサービスのログを確認する場合は次のように実行します。
journalctl -u sshd.service
Apache HTTP Serverの場合は、環境によって次のようになります。
journalctl -u httpd.service
基本的には、
journalctl -u サービス名
と覚えておけばいいでしょう。
サービスが起動しないときは、最初にsystemctl statusで状態を確認してから、journalctlで詳しいログを調べるという流れもよく使います。
systemctl status httpd.service
続いて、
journalctl -u httpd.service
と実行して、サービスに関連するログを確認します。
systemctlについては、別の記事で詳しく紹介する予定です。
ログをリアルタイムで確認する
ログをリアルタイムで確認したいときは、-fオプションを使います。
journalctl -f
コマンドを実行したままにしておくと、新しいログが記録されるたびに画面へ表示されます。
ログファイルに対してtail -fを実行するのと似た使い方です。
たとえば、
- journalctlでログをリアルタイム表示する
- 別のターミナルからサービスを起動・再起動する
- そのときに出力されるログを確認する
といった使い方ができます。
特定のサービスだけをリアルタイムで確認することもできます。
journalctl -u httpd.service -f
サービスを起動・再起動したときに、どのようなログが出ているのか確認したい場合に便利です。
リアルタイム表示を終了するときは、Ctrl + Cを押します。
今回のOS起動後のログを確認する
現在のOSが起動してから記録されたログだけを確認したい場合は、-bオプションを使います。
journalctl -b
たとえば、サーバーを再起動したあとから問題が発生している場合などに使えます。
もちろん、サービスの指定と組み合わせることもできます。
journalctl -u httpd.service -b
これなら、現在のOS起動後に記録されたhttpd.serviceのログだけを確認できます。
前回起動時のログを確認する
前回起動していたときのJournalが残っている場合は、次のように確認できます。
journalctl -b -1
-1は1つ前の起動、-2なら2つ前の起動を指定します。
たとえば、サーバーが予期せず再起動してしまった場合に、再起動する前に何が起きていたのか調べるときに役立ちます。
ただし、Journalの保存設定によっては再起動前のログが残っていない場合もあるため、その点には注意が必要です。
時間を指定してログを確認する
障害が発生した時間がある程度分かっているなら、時間を指定してログを絞り込むと確認しやすくなります。
指定した時間以降のログを確認する
指定した時間以降のログを見る場合は、--sinceを使います。
journalctl --since "2026-09-28 10:00:00"
これで、指定した日時以降に記録されたログを確認できます。
今日のログを確認するだけなら、次のような指定もできます。
journalctl --since today
時間の範囲を指定する
開始時間だけでなく終了時間も指定したい場合は、--sinceと--untilを組み合わせます。
journalctl --since "2026-09-28 10:00:00" --until "2026-09-28 10:30:00"
これなら、10時から10時30分までのログだけを確認できます。
たとえば、「10時15分ごろにエラーが発生した」と分かっているなら、その前後だけに絞って確認した方が調査しやすくなります。
私もログを確認するときは、発生時刻が分かっている場合、時間帯を絞ってから確認することがあります。
大量のログを最初からすべて追いかけるより、かなり探しやすくなります。
エラーや警告に絞って確認する
journalctlでは、ログの重要度(Priority)を指定して表示することもできます。
重要度を指定する場合は、-pオプションを使います。
たとえば、エラー以上のログを確認する場合は次のように実行します。
journalctl -p err
主なPriorityは次のとおりです。
| Priority | 内容 |
|---|---|
| emerg | システムが使用できないレベル |
| alert | すぐに対応が必要 |
| crit | 致命的な状態 |
| err | エラー |
| warning | 警告 |
| notice | 注意が必要な情報 |
| info | 一般的な情報 |
| debug | デバッグ情報 |
たとえば、今回のOS起動後に発生したエラー以上のログだけを確認したい場合は、
journalctl -p err -b
と実行します。
ただし、-p errだけを見て「エラーが出ていないから問題なし」と判断するのは避けた方がいいでしょう。
原因を特定するための情報がwarningやinfoとして記録されていることもあります。
まずエラーを確認して、必要に応じてその前後の通常ログも見る、といった使い方がおすすめです。
journalctlのオプションは組み合わせて使える
ここまで紹介したオプションは、それぞれ組み合わせて使えます。
たとえば、
journalctl -u httpd.service -b -p err
と実行すると、
httpd.serviceのログ- 今回のOS起動後
- err以上の重要度
という条件に絞って確認できます。
発生時間まで分かっているなら、
journalctl -u httpd.service --since "2026-09-28 10:00:00" --until "2026-09-28 10:30:00"
といった使い方もできます。
journalctlはオプションを一つずつ暗記するというより、
「どのサービスで発生したのか」
「いつ発生したのか」
「どの程度の重要度なのか」
といった情報から、少しずつログを絞り込んでいくと使いやすいと思います。
実際の障害調査ではどう使う?
ここでは例として、Webサーバーが正常に起動しない場合を考えてみます。
まずはsystemctl statusでサービスの状態を確認します。
systemctl status httpd.service
サービスがfailedになっている場合などは、journalctlで詳しいログを確認します。
journalctl -u httpd.service -b
ログが多い場合は、直近のログだけに絞ってみます。
journalctl -u httpd.service -n 50
エラーを中心に確認したい場合は、次のような指定もできます。
journalctl -u httpd.service -p err
設定を修正してサービスを再起動するときは、リアルタイムでログを表示しておくのも一つの方法です。
journalctl -u httpd.service -f
この状態で別のターミナルからサービスを再起動すれば、そのときに出力されるログを追いかけられます。
実際の障害調査では、最初から大量のログをすべて読むよりも、問題が起きているサービスや時間帯から少しずつ対象を絞っていった方が確認しやすいです。
journalctlでログが表示されない場合
journalctlを実行しても目的のログが見つからない場合は、いくつか確認しておきたいポイントがあります。
sudoを付けて確認する
ユーザーの権限によっては、確認できるJournalが制限される場合があります。
sudo journalctl
権限が原因かもしれない場合は、sudoを付けて確認してみます。
サービス名が正しいか確認する
-uで指定するUnit名が間違っていると、目的のログを確認できません。
たとえば、
systemctl status httpd.service
などでUnit名を確認してからjournalctlを実行します。
Linuxディストリビューションやソフトウェアによってサービス名が異なる場合もあるので、記事中のhttpd.serviceなどはあくまで例として考えてください。
再起動前のログが残っていない
journalctl -b -1を実行しても前回起動時のログを確認できない場合は、Journalの保存方法も確認してみましょう。
Journalの保存方法や設定はLinuxディストリビューションなどによって異なります。
再起動前のログが必要な環境では、あらかじめログが永続的に保存される設定になっているか確認しておくことも大切です。
journalctlだけにログがあるとは限らない
サービスによっては、journalctlだけではなく/var/log/以下などに独自のログファイルを出力していることがあります。
journalctlに目的の情報が見つからない場合は、そのサービスがどこへログを出力しているのか確認してみるのも大切です。
よく使うjournalctlコマンドまとめ
最後に、今回紹介したコマンドを簡単にまとめます。
| コマンド | 用途 |
|---|---|
journalctl | Journal全体を表示する |
journalctl -n 50 | 最新50件を表示する |
journalctl -u サービス名 | 特定サービスのログを表示する |
journalctl -f | ログをリアルタイムで表示する |
journalctl -u サービス名 -f | 特定サービスのログをリアルタイムで表示する |
journalctl -b | 現在の起動後のログを表示する |
journalctl -b -1 | 1つ前の起動時のログを表示する |
journalctl --since today | 今日のログを表示する |
journalctl --since "日時" --until "日時" | 指定した時間帯のログを表示する |
journalctl -p err | エラー以上のログを表示する |
最初からすべてのオプションを覚える必要はありません。
まずは、
journalctl -u サービス名
journalctl -f
journalctl -b
journalctl --since "日時"
このあたりを覚えておけば、基本的なログ確認ではかなり使えると思います。
必要になったときに、ほかのオプションを調べながら使っていけば十分です。
まとめ
journalctlは、systemdを採用しているLinuxでログを確認するときによく使うコマンドです。
そのまま実行するだけでもログを確認できますが、実際のサーバー運用では、
- サービスを指定する
- 時間帯を指定する
- 現在のOS起動後だけに絞る
- エラーなど重要度を指定する
- リアルタイムでログを確認する
といった使い方を覚えておくと、必要な情報を探しやすくなります。
特にサービスでトラブルが発生したときは、systemctl statusで状態を確認してから、journalctl -uで詳しいログを確認する流れを覚えておくと便利です。
Linuxサーバーの運用ではログを確認する機会が多いため、journalctlは私自身もよく使うコマンドの一つです。
すべてのオプションを覚えようとせず、まずは今回紹介した基本的な使い方から覚えていくのがおすすめです。
関連記事
Linuxサーバーでは、設定ファイルを編集するときにviを使う機会も多くあります。
「viコマンドの基本的な使い方」

また、サービスの起動・停止や状態確認で使用するsystemctlについても、別の記事で紹介予定です。


コメント