journalctlコマンドの使い方|オプション一覧を解説

コマンドリファレンス

journalctl コマンドは、systemd が管理するジャーナルログを表示・検索するコマンドです。システムログ、サービスログ、カーネルメッセージをまとめて確認でき、障害調査やサービスの起動失敗原因の特定に使います。

-u でサービスを指定、-f でリアルタイム追跡、--since で時刻を絞り込むなど、オプションを組み合わせることで目的のログにすばやくたどり着けます。

オプションを組み合わせて確認するwebツールも用意しています → journalctl コマンド生成ツール

  1. 構文(Syntax)
  2. 主なオプション一覧
  3. 基本の使い方
    1. 全ログを表示する
    2. 直近 N 行だけ表示する
    3. リアルタイムでログを追跡する
  4. サービスを指定してログを確認する(-u)
    1. nginx のログを確認する
    2. SSH のログを確認する
    3. サービスのリアルタイムログを追跡する
  5. 時刻を指定してログを絞り込む(–since / –until)
    1. 直近 1 時間のログを表示する
    2. 特定の時間帯のログを表示する
    3. 今日のログだけ表示する
    4. 日付・時刻の指定方法(フォーマット一覧)
  6. 起動単位でログを確認する(-b)
    1. 今回の起動分のログを表示する
    2. 前回起動時のログを表示する
  7. 優先度でログを絞り込む(-p)
    1. エラー以上のログだけ表示する
    2. 警告以上のログだけ表示する
    3. 今回の起動分のエラーを確認する
  8. カーネルログを確認する(-k)
  9. エラーの詳細を確認する(-xe)
    1. 特定サービスの失敗直後を -xeu で確認する
  10. 出力形式を変更する(-o)
    1. タイムスタンプを ISO 形式で表示する
    2. JSON 形式で出力する
  11. ページャーなしで表示する(–no-pager)
  12. ログ容量の確認と削除
    1. ディスク使用量を確認する
    2. 7 日以上前のログを削除する
    3. 合計サイズを 1GB 以下に削減する
  13. 障害調査での実用例
    1. サービスが起動しない原因を確認する
    2. 直近のエラーだけ確認する
    3. 再起動前のログを確認する
    4. リアルタイムでエラーを監視する
  14. よくある失敗例
    1. -u にサービス名を正しく指定できていない
    2. sudo なしで必要なログが見えない
    3. 期間指定のクォートを忘れる
    4. ログ量が多すぎて目的の行を見つけられない
  15. よくある疑問
    1. journalctl は何を見るコマンドですか?
    2. 特定サービスのログを見るにはどうすればいいですか?
    3. リアルタイムでログを見るにはどうすればいいですか?
    4. 前回起動時のログを見るにはどうすればいいですか?
    5. 古いログを削除するにはどうすればいいですか?
    6. journalctl -xe とは何ですか?
    7. journalctl で日付を指定するにはどうすればいいですか?
  16. 関連コマンド
  17. 備考
  18. 参考
  19. 関連記事

構文(Syntax)

journalctl [オプション] [フィルタ]

主なオプション一覧

オプション説明使用例
(なし)すべてのログを表示journalctl
-u UNIT特定のサービスのログを表示journalctl -u nginx
-f新しいログをリアルタイムに追跡journalctl -f
-n N直近 N 行のみ表示journalctl -n 50
-b [N]起動単位でログを絞り込む(-b -1 で前回起動分)journalctl -b
--since "..."指定時刻以降のログを表示journalctl --since "1 hour ago"
--until "..."指定時刻までのログを表示journalctl --until "2026-06-09 12:00"
-p LEVELログレベルで絞り込み(0=emerg〜7=debug)journalctl -p err
-kカーネルメッセージのみ表示journalctl -k
-xe説明文を付加し、末尾(最新ログ)へジャンプjournalctl -xe
-o FORMAT出力形式を変更(json, short-iso など)journalctl -o json
--no-pagerページャーなしで全件出力journalctl --no-pager -n 100
--disk-usageジャーナルのディスク使用量を表示journalctl --disk-usage
--vacuum-size=SIZE指定サイズを超えた古いログを削除sudo journalctl --vacuum-size=1G
--vacuum-time=TIME指定日数以上前のログを削除sudo journalctl --vacuum-time=7d

基本の使い方

全ログを表示する

journalctl

引数なしで実行すると全ログをページャー(less)で表示します。ログ量が多い場合は後述のオプションで絞り込みます。

直近 N 行だけ表示する

journalctl -n 50

最新 50 行だけを表示します。数値は任意に変更できます。

リアルタイムでログを追跡する

journalctl -f

tail -f と同じ動作で、ログが追記されるたびにリアルタイムで表示します。Ctrl+C で終了します。

サービスを指定してログを確認する(-u)

-u オプションでサービス名を指定すると、そのサービスのログだけを絞り込めます。

nginx のログを確認する

journalctl -u nginx

SSH のログを確認する

journalctl -u ssh

ディストリビューションによっては sshd とする場合もあります。

サービスのリアルタイムログを追跡する

journalctl -u nginx -f

-u-f を組み合わせると、特定サービスのログをリアルタイムで追えます。

時刻を指定してログを絞り込む(–since / –until)

直近 1 時間のログを表示する

journalctl --since "1 hour ago"

特定の時間帯のログを表示する

journalctl --since "2026-06-09 10:00" --until "2026-06-09 11:00"

--since--until を組み合わせると、障害発生時間帯のログだけを確認できます。日時は ダブルクォートで囲むのを忘れないようにします。

今日のログだけ表示する

journalctl --since today

日付・時刻の指定方法(フォーマット一覧)

--since / --until には絶対時刻・相対時刻のどちらも指定できます。空白を含む場合は必ずダブルクォートで囲みます。

指定方法意味使用例
YYYY-MM-DD指定日の 0:00 からjournalctl --since "2026-07-01"
YYYY-MM-DD HH:MM:SS日時を秒まで指定journalctl --since "2026-07-01 09:00:00"
today / yesterday / tomorrowその日の 0:00 を基準journalctl --since yesterday
"N hour(s)/day(s)/min(s) ago"現在時刻からの相対指定journalctl --since "30 min ago"
now現在時刻journalctl --until now

日付だけを指定して時刻を省略した場合は 0:00:00 が補完されます。年をまたぐ調査でも YYYY-MM-DD 形式で明示すれば誤認識を防げます。

起動単位でログを確認する(-b)

今回の起動分のログを表示する

journalctl -b

前回起動時のログを表示する

journalctl -b -1

-b -1 で 1 回前の起動分、-b -2 でさらに 1 回前のログを確認できます。再起動前に何が起きていたかを調べるときに有用です。

優先度でログを絞り込む(-p)

-p オプションでログレベルを指定すると、指定レベル以上のログだけを表示します。

レベル番号キーワード内容
0emergシステムが使用不能
1alertすぐに対処が必要
2crit重大なエラー
3errエラー
4warning警告
5notice通常だが注目すべき
6info情報
7debugデバッグ情報

エラー以上のログだけ表示する

journalctl -p err

警告以上のログだけ表示する

journalctl -p warning

今回の起動分のエラーを確認する

journalctl -p err -b

出力例:

Aug 21 10:15:12 server1 sshd[1234]: error: PAM: Authentication failure for root

カーネルログを確認する(-k)

journalctl -k

カーネルメッセージのみを表示します。dmesg と同等の情報をジャーナルから取得します。ハードウェアエラーやドライバの問題を調査するときに使います。

エラーの詳細を確認する(-xe)

systemctl statussystemctl start がサービスの起動失敗を報告すると、末尾に「See “systemctl status …service” and “journalctl -xe” for details.」と表示されることがあります。-xe はこのメッセージが指す通り、詳細調査の入り口になるオプションです。

journalctl -xe

-x はログにカタログ(説明文)を付加し、エラーコードの意味やドキュメントへの参照を補足表示します。-e は表示位置をログの末尾(最新のエントリ)にジャンプさせるオプションで、-f と違いその場で追跡はせず、最新ログを読んだ時点で止まります。

特定サービスの失敗直後を -xeu で確認する

journalctl -xeu nginx.service

-u と組み合わせて -xeu UNIT とすると、指定サービスの直近ログを説明文付きで表示します。デプロイ直後にサービスが起動しない場合など、まず実行するコマンドとして覚えておくと調査が速くなります。

出力形式を変更する(-o)

タイムスタンプを ISO 形式で表示する

journalctl -o short-iso

タイムゾーン付きの ISO 8601 形式でタイムスタンプを表示します。ログを他システムと照合するときに便利です。

JSON 形式で出力する

journalctl -o json -n 5

1行1JSONで出力します。jq と組み合わせてフィールドを絞り込むのに便利です。

ページャーなしで表示する(–no-pager)

journalctl --no-pager -n 100

デフォルトでは less でページング表示されますが、--no-pager を付けるとすべてターミナルに直接出力されます。スクリプトや grep とのパイプ処理に使います。

journalctl --no-pager -u nginx | grep "error"

ログ容量の確認と削除

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

journalctl --disk-usage

出力例:

Archived and active journals take up 320.0M in the file system.

7 日以上前のログを削除する

sudo journalctl --vacuum-time=7d

合計サイズを 1GB 以下に削減する

sudo journalctl --vacuum-size=1G

--vacuum-time は期間指定、--vacuum-size はサイズ指定です。どちらも古いログから削除します。削除には sudo が必要です。

障害調査での実用例

サービスが起動しない原因を確認する

systemctl status nginx
journalctl -u nginx -n 50

systemctl status でエラーの概要を確認し、journalctl -u で詳細なログを確認します。起動失敗の原因(設定ミス、ポート競合など)がログに記録されています。Web サーバーが 500 エラーを返す場合は500エラーの原因切り分けもあわせて確認してください。

直近のエラーだけ確認する

journalctl -p err --since "1 hour ago"

直近 1 時間のエラーレベル以上のログを一覧表示します。障害発生直後の原因探しに使います。

再起動前のログを確認する

journalctl -b -1 -u nginx

前回の起動セッション中の nginx ログを確認します。再起動を挟んで問題が発生した場合の調査に使います。

リアルタイムでエラーを監視する

journalctl -f -p err

エラー以上のログが発生したときだけリアルタイムで表示します。デプロイ後の動作確認などに便利です。

よくある失敗例

-u にサービス名を正しく指定できていない

# NG: サービスが見つからず "-- No entries --" が表示される
journalctl -u Nginx

# OK: サービス名は大文字・小文字を区別する
journalctl -u nginx

サービス名は systemctl list-units --type=service で確認できます。

sudo なしで必要なログが見えない

# 一部ログが欠落する
journalctl -u nginx

# システム全体のログが見える
sudo journalctl -u nginx

一般ユーザーでは自分のセッションに関するログしか見えない場合があります。sudo を付けるか、adm グループに追加することで全ログにアクセスできます。

期間指定のクォートを忘れる

# NG: エラーになる
journalctl --since 2026-06-09 10:00

# OK: ダブルクォートで囲む
journalctl --since "2026-06-09 10:00"

ログ量が多すぎて目的の行を見つけられない

# --no-pager と grep を組み合わせて絞り込む
journalctl -u nginx --no-pager | grep "error"

# または -n で最新行だけ見る
journalctl -u nginx -n 50

よくある疑問

journalctl は何を見るコマンドですか?

systemd が管理するジャーナルログを表示するコマンドです。システム全体のログ、サービスのログ、カーネルメッセージをまとめて確認できます。従来の /var/log/syslogdmesg の代わりに使います。

特定サービスのログを見るにはどうすればいいですか?

journalctl -u サービス名 で確認できます。サービス名は systemctl list-units --type=service で一覧を確認してください。

リアルタイムでログを見るにはどうすればいいですか?

journalctl -f を使います。特定サービスに絞る場合は journalctl -f -u nginx のように -u を組み合わせます。

前回起動時のログを見るにはどうすればいいですか?

journalctl -b -1 で前回の起動セッションのログを表示します。-b -2 でさらに 1 つ前の起動分が確認できます。

古いログを削除するにはどうすればいいですか?

sudo journalctl --vacuum-time=7d で 7 日以上前のログを削除できます。サイズ指定で削除する場合は sudo journalctl --vacuum-size=1G を使います。

journalctl -xe とは何ですか?

サービスの起動失敗時などに systemctl が案内する調査コマンドです。-x で説明文を付加し、-e でログの末尾(最新分)にジャンプします。エラーの直後に何が記録されたかをすばやく確認できます。

journalctl で日付を指定するにはどうすればいいですか?

--since "2026-07-01" のように YYYY-MM-DD 形式で指定します。時刻まで絞り込む場合は --since "2026-07-01 09:00:00"、相対指定なら --since "1 hour ago" も使えます。空白を含むため必ずダブルクォートで囲みます。

関連コマンド

  • systemctl : サービスやユニットの管理。systemctl status と組み合わせて使うのが定石
  • dmesg : カーネルリングバッファを表示。journalctl -k と同等の情報が得られる
  • logger : 任意のメッセージを syslog/journal に記録
  • systemd ユニットの基本と再起動戦略 : サービスが落ちる原因と Restart= 設計をあわせて確認できる
  • デプロイ後の初動チェック : デプロイ直後に journalctl を使って確認すべき項目のチェックリスト

備考

  • journalctlsystemd-journald によるログを扱います。syslog(rsyslog, syslog-ng)と併用されることもあります。
  • ログは通常 /var/log/journal/ に保存されますが、ディストリビューションによっては揮発性(メモリ上のみ)の場合もあります。
  • フィルタは複数指定可能で、-u-p--since を組み合わせると目的のログに素早くたどり着けます。

参考

Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする

コメント