journalctlとは?使い方とオプションをわかりやすく解説【Linux】

journalctlとは?使い方とオプションをわかりやすく解説【Linux】

PR Amazonのアソシエイトとして、ITナレッジライフは適格販売により収入を得ています。

記事の文字数:3,952

Linuxのjournalctlコマンドの使い方を初心者向けに解説します。systemdのログを確認するjournalctlの基本から、-u・-f・-p・--sinceなど主要オプション、サービスログの絞り込みやリアルタイム監視、ログの管理方法まで具体例付きで紹介します。

Linuxユーザにお勧めの本 ↗

最新版

ゼロからはじめるLinuxサーバー構築・運用ガイド 第2版 動かしながら学ぶWebサーバーの作り方

難易度
実用性
最新度

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

初心者向け

わかばちゃんと学ぶ サーバー監視

難易度
実用性
読みやすさ

マンガと図解が中心で圧倒的に読みやすい。負荷調査の手法がスッと理解できるようになります。

新しいLinuxの教科書 第2版

難易度
実用性
読みやすさ

一生モノの基礎知識が身につく定番書です。

ゼロからわかる Linuxコマンド200本ノック―基礎知識と頻出コマンドを無理なく記憶に焼きつけよう!

難易度
実用性
習得度

アウトプット重視で記憶に定着しやすい。反復練習でLinux操作が自由自在になります。

エンジニア1年生のための世界一わかりやすいLinuxコマンドの教科書

難易度
実用性
読みやすさ

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.confStorage=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 nginx
実行結果(例)
Aug 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 -f

Webサーバーのアクセス状況の確認や、デプロイ直後のエラー監視に便利です。Ctrl+Cで終了できます。

-n:直近のN行を表示する

-nオプションで、表示する行数を指定できます。

実行コマンド(直近20行を表示)
journalctl -n 20

-nのみで行数を省略した場合は、デフォルトで直近10行が表示されます。

実行コマンド(直近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

指定できるログレベルは以下の通りです。数値が小さいほど深刻度が高くなります。

レベル名称意味
0emergシステムが使用不能
1alert直ちに対処が必要
2crit致命的な状態
3errエラー
4warning警告
5notice通常だが重要な状態
6info情報メッセージ
7debugデバッグ情報

名称の代わりに数値で指定することもできます。

実行コマンド(warning以上のログを表示)
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 yesterday
実行コマンド(1時間前から現在まで)
journalctl --since "1 hour ago"
実行コマンド(今日のログ)
journalctl --since today

障害が発生した時間帯を特定した後、その前後のログをピンポイントで確認するのに便利です。

-k:カーネルログのみ表示する

-kオプションで、カーネルが出力したログのみを表示します。dmesgコマンドと同様の出力が得られます。

実行コマンド
journalctl -k

ハードウェアの障害やドライバの問題を調査する際に役立ちます。

-b:起動ごとのログを表示する

-bオプションで、特定の起動セッションのログを表示できます。

実行コマンド(現在の起動分のログ)
journalctl -b
実行コマンド(1つ前の起動分のログ)
journalctl -b -1

サーバーの再起動前後でログを比較したい場合に便利です。起動セッションの一覧は以下のコマンドで確認できます。

実行コマンド
journalctl --list-boots

-xe:エラーの詳細情報を表示する

-xはログにカタログ情報(エラーの説明や解決のヒント)を追加し、-eはログの末尾にジャンプして表示します。組み合わせた-xeは、サービスの起動失敗時のトラブルシューティングで非常によく使われます。

実行コマンド
journalctl -xe

systemctl startでサービスの起動に失敗した際、journalctl -xeを実行するとエラーの原因と対処のヒントが表示されることが多いです。

補足: -eオプションはページャ(less)を使用している場合にのみ有効です。--no-pagerと併用すると末尾へのジャンプは機能しないため、その場合は-xのみの指定で十分です。

-g:正規表現でログを検索する

-g(grep)オプションで、ログメッセージを正規表現で検索できます。

実行コマンド(errorまたはfailedを含むログを検索)
journalctl -g "error|failed"

特定のキーワードに関するログだけを抽出したい場合に便利です。

—no-pager:ページャなしで出力する

デフォルトではページャ(less)を通して表示されますが、--no-pagerで標準出力にそのまま出力できます。パイプやリダイレクトと組み合わせる場合に使います。

実行コマンド(ログをファイルに保存)
journalctl -u nginx --no-pager > /tmp/nginx.log
実行コマンド(grepでフィルタリング)
journalctl -u nginx --no-pager | grep "500"

実践例:サービス起動失敗時の調査

journalctlの典型的な活用シーンとして、サービスの起動に失敗したときの調査手順を紹介します。

ステップ1:サービスの状態を確認する

実行コマンド
systemctl status nginx

Active: failed と表示されたら、ログを確認します。

ステップ2:journalctlでエラーログを確認する

実行コマンド
journalctl -u nginx -p err -n 30

サービス名を指定し、エラーレベル以上のログを直近30行表示します。

ステップ3:詳細なエラー情報を確認する

実行コマンド
journalctl -u nginx -xe

カタログ情報付きで詳細を確認し、エラーの原因を特定します。

ログの管理(ディスク容量の確認と削除)

ジャーナルログはディスク容量を消費するため、定期的な管理が必要です。

ディスク使用量を確認する

実行コマンド
journalctl --disk-usage
実行結果(例)
Archived and active journals take up 1.5G in the file system.

古いログを削除する

--vacuum-timeで指定した期間より古いログを削除できます。

実行コマンド(7日より前のログを削除)
sudo journalctl --vacuum-time=7d

--vacuum-sizeでサイズを指定して削減することもできます。

実行コマンド(ログを500MBまで削減)
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コマンドの使い方もあわせて参考にしてください。

tailでログを行数表示|リアルタイム監視する【Linux】
ITナレッジライフ

tailでログを行数表示|リアルタイム監視する【Linux】

Linuxのtailコマンドを利用して、ファイルの末尾を行数指定で表示する方法やリアルタイムでログを監視する方法を解説します。tailコマンドの基本的な使い方から、-fや-Fオプションの違いや、複数ファイルの同時監視方法。grepとの組み合わせによるフィルタリングまで、実践的なノウハウを紹介します。


以上で本記事の解説を終わります。
よいITライフを!
ITナレッジライフ 運営者
この記事を書いた人

Z (ITナレッジライフ)

現役のITエンジニア。Linux、プログラミング、IT用語など、日々の業務で得た「痒いところに手が届く」技術情報を発信しています。

プロフィールと編集ポリシーを見る

Linuxユーザにお勧めの本 ↗

最新版

ゼロからはじめるLinuxサーバー構築・運用ガイド 第2版 動かしながら学ぶWebサーバーの作り方

難易度
実用性
最新度

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

人気記事


記事を評価

Thanks!
目次
Scroll to Top