LinuxLinux [リナックス / ライナックス]オープンソースのOSカーネルサーバーの運用でログを確認する場面は頻繁に発生します。サービスの起動に失敗した、原因不明のエラーが出ている、といったトラブルの調査には正確なログの確認が欠かせません。
systemdを採用したLinux環境では、ログの確認に journalctl コマンドを使います。本記事では、journalctlの基本的な使い方から、実務で役立つ主要オプションまでわかりやすく解説します。
journalctlとは
journalctlは、systemdが管理するログ(ジャーナル)を閲覧するためのコマンドです。
従来のLinuxでは/var/log/messagesや/var/log/syslogなどのテキストファイルを直接開いてログを確認していましたが、systemdでは「systemd-journald」というサービスがログをバイナリ形式で一元管理しています。このバイナリログを人間が読める形式で表示するのがjournalctlです。
journalctlを使うメリットは以下の通りです。
- カーネルログ、サービスログ、認証ログなどを1つのコマンドで横断検索できる
- 時間帯やサービス名、ログレベルなどの柔軟なフィルタリングが可能
- ログローテーションを意識せず、過去のログも一貫して検索できる
注意:ログの永続化設定について ディストリビューションや初期設定によっては、ジャーナルログが揮発性メモリ(
/run/log/journal/)にのみ保存され、再起動するとログが消えてしまう場合があります。過去の起動セッションのログ(-b -1など)を確実に残すには、/etc/systemd/journald.confでStorage=persistentを設定するか、/var/log/journal/ディレクトリを作成してデーモンを再起動してください。永続化の設定例 # /var/log/journal/ ディレクトリを作成sudo mkdir -p /var/log/journal# systemd-journald を再起動して反映sudo systemctl restart systemd-journald
journalctlの基本構文
journalctl [オプション]引数なしで実行すると、システムに記録されたすべてのログが古い順に表示されます。
journalctl出力はページャ(less)で表示されるため、↑/↓キーでスクロール、qキーで終了できます。
一般ユーザーで実行時にログが表示されない場合 一般ユーザー(非root)で
journalctlを実行すると、権限不足により「No journal files were opened due to insufficient permissions.」と表示されることがあります。毎回sudoを使わずにログを閲覧するには、ユーザーをsystemd-journalグループに追加してください。systemd-journalグループへの追加 sudo usermod -aG systemd-journal $USER変更はログアウト後に反映されます。
journalctlの主要オプションと使い方
-u:サービス(ユニット)を指定してログを表示する
-uオプションは、特定のサービス(systemdユニット)のログだけを表示します。実務で最もよく使うオプションです。
journalctl -u nginxAug 12 10:00:01 server01 systemd[1]: Starting nginx.service - A high performance web server...Aug 12 10:00:01 server01 systemd[1]: Started nginx.service - A high performance web server.Aug 12 10:05:30 server01 nginx[1234]: 192.168.1.10 - - [12/Aug/2026:10:05:30 +0900] "GET / HTTP/1.1" 200複数のサービスを同時に確認することもできます。
journalctl -u nginx -u postgresqlサービス名の確認方法 サービス名がわからない場合は、
systemctl list-units --type=serviceで一覧を確認できます。サービス一覧の確認 systemctl list-units --type=service
-f:ログをリアルタイムで監視する
-fオプションを付けると、tail -fと同様にログの追記をリアルタイムで表示し続けます。
journalctl -f特定のサービスのログだけをリアルタイム監視する場合は、-uと組み合わせます。
journalctl -u nginx -fWebサーバーのアクセス状況の確認や、デプロイ直後のエラー監視に便利です。Ctrl+Cで終了できます。
-n:直近のN行を表示する
-nオプションで、表示する行数を指定できます。
journalctl -n 20-nのみで行数を省略した場合は、デフォルトで直近10行が表示されます。
journalctl -n補足:
-nの行数指定は省略可能な引数(optional argument)です。そのためjournalctl -n20のように詰めて書くこともできます。journalctl -n 20のようにスペースを空けて書いても同じ動作になるので、どちらの書き方でも問題ありません。
サービス指定と組み合わせて、特定サービスの直近ログだけを素早く確認できます。
journalctl -u nginx -n 50-r:新しいログから順に表示する
デフォルトでは古いログから順に表示されますが、-r(reverse)オプションで新しいログを先頭に表示できます。
journalctl -r直近のエラーを素早く確認したいときに有効です。
-p:ログレベル(優先度)で絞り込む
-pオプションで、特定の優先度(ログレベル)以上のログだけを表示できます。
journalctl -p err指定できるログレベルは以下の通りです。数値が小さいほど深刻度が高くなります。
| レベル | 名称 | 意味 |
|---|---|---|
| 0 | emerg | システムが使用不能 |
| 1 | alert | 直ちに対処が必要 |
| 2 | crit | 致命的な状態 |
| 3 | err | エラー |
| 4 | warning | 警告 |
| 5 | notice | 通常だが重要な状態 |
| 6 | info | 情報メッセージ |
| 7 | debug | デバッグ情報 |
名称の代わりに数値で指定することもできます。
journalctl -p 4サービス指定と組み合わせれば、特定サービスのエラーだけを効率的に確認できます。
journalctl -u nginx -p err—since / —until:時間帯で絞り込む
--sinceと--untilオプションで、特定の期間のログだけを抽出できます。
日時を直接指定する
journalctl --since "2026-08-12 09:00:00" --until "2026-08-12 12:00:00"相対的な時間で指定する
「yesterday」「today」「1 hour ago」などの表現も使えます。
journalctl --since yesterdayjournalctl --since "1 hour ago"journalctl --since today障害が発生した時間帯を特定した後、その前後のログをピンポイントで確認するのに便利です。
-k:カーネルログのみ表示する
-kオプションで、カーネルが出力したログのみを表示します。dmesgコマンドと同様の出力が得られます。
journalctl -kハードウェアの障害やドライバの問題を調査する際に役立ちます。
-b:起動ごとのログを表示する
-bオプションで、特定の起動セッションのログを表示できます。
journalctl -bjournalctl -b -1サーバーの再起動前後でログを比較したい場合に便利です。起動セッションの一覧は以下のコマンドで確認できます。
journalctl --list-boots-xe:エラーの詳細情報を表示する
-xはログにカタログ情報(エラーの説明や解決のヒント)を追加し、-eはログの末尾にジャンプして表示します。組み合わせた-xeは、サービスの起動失敗時のトラブルシューティングで非常によく使われます。
journalctl -xesystemctl startでサービスの起動に失敗した際、journalctl -xeを実行するとエラーの原因と対処のヒントが表示されることが多いです。
補足:
-eオプションはページャ(less)を使用している場合にのみ有効です。--no-pagerと併用すると末尾へのジャンプは機能しないため、その場合は-xのみの指定で十分です。
-g:正規表現でログを検索する
-g(grep)オプションで、ログメッセージを正規表現で検索できます。
journalctl -g "error|failed"特定のキーワードに関するログだけを抽出したい場合に便利です。
—no-pager:ページャなしで出力する
デフォルトではページャ(less)を通して表示されますが、--no-pagerで標準出力にそのまま出力できます。パイプやリダイレクトと組み合わせる場合に使います。
journalctl -u nginx --no-pager > /tmp/nginx.logjournalctl -u nginx --no-pager | grep "500"実践例:サービス起動失敗時の調査
journalctlの典型的な活用シーンとして、サービスの起動に失敗したときの調査手順を紹介します。
ステップ1:サービスの状態を確認する
systemctl status nginxActive: failed と表示されたら、ログを確認します。
ステップ2:journalctlでエラーログを確認する
journalctl -u nginx -p err -n 30サービス名を指定し、エラーレベル以上のログを直近30行表示します。
ステップ3:詳細なエラー情報を確認する
journalctl -u nginx -xeカタログ情報付きで詳細を確認し、エラーの原因を特定します。
ログの管理(ディスク容量の確認と削除)
ジャーナルログはディスク容量を消費するため、定期的な管理が必要です。
ディスク使用量を確認する
journalctl --disk-usageArchived and active journals take up 1.5G in the file system.古いログを削除する
--vacuum-timeで指定した期間より古いログを削除できます。
sudo journalctl --vacuum-time=7d--vacuum-sizeでサイズを指定して削減することもできます。
sudo journalctl --vacuum-size=500M補足:
--vacuum-timeや--vacuum-sizeで削除されるのは、アーカイブ(ローテーション)済みの過去のログファイルのみです。現在アクティブに書き込みを行っている最新のログファイルは、指定した期間やサイズを超えていても削除されません。
journalctlのオプションまとめ
| オプション | 説明 |
|---|---|
-u サービス名 | 指定したサービスのログを表示 |
-f | リアルタイムでログを追跡表示 |
-n 行数 | 直近のN行を表示(デフォルト10行) |
-r | 新しいログから順に表示 |
-p ログレベル | 指定した優先度以上のログを表示 |
--since / --until | 指定した時間帯のログを表示 |
-k | カーネルログのみ表示 |
-b | 起動セッションごとのログを表示 |
-xe | カタログ情報付きで末尾のログを表示 |
-g パターン | 正規表現でログを検索 |
--no-pager | ページャを使わず標準出力に出力 |
--disk-usage | ジャーナルのディスク使用量を表示 |
--vacuum-time | 指定期間より古いログを削除 |
--vacuum-size | 指定サイズまでログを削減 |
まとめ
journalctlはsystemdのログ(ジャーナル)を閲覧するコマンド-uでサービス単位、-pでログレベル、--sinceで時間帯を絞り込める-fでリアルタイム監視、-xeでエラー詳細の確認が可能--vacuum-timeや--vacuum-sizeでログのディスク容量を管理できる
トラブルシューティングでは、まずjournalctl -u サービス名 -p err -n 30で直近のエラーを確認し、詳細が必要な場合はjournalctl -u サービス名 -xeで調査するのが基本的な流れです。
関連記事 ログのリアルタイム監視については、
tailコマンドの使い方もあわせて参考にしてください。ITナレッジライフtailでログを行数表示|リアルタイム監視する【Linux】
Linuxのtailコマンドを利用して、ファイルの末尾を行数指定で表示する方法やリアルタイムでログを監視する方法を解説します。tailコマンドの基本的な使い方から、-fや-Fオプションの違いや、複数ファイルの同時監視方法。grepとの組み合わせによるフィルタリングまで、実践的なノウハウを紹介します。
以上で本記事の解説を終わります。
よいITライフを!
人気記事
- 1
- 2
- 3
- 4
- 5

Rocky Linux対応。実際にWebサーバーを公開するまでのプロセスを体験できる、最も確実で実践的なガイドブックです。