journalctl コマンドは、systemd が管理するジャーナルログを表示・検索するコマンドです。システムログ、サービスログ、カーネルメッセージをまとめて確認でき、障害調査やサービスの起動失敗原因の特定に使います。
-u でサービスを指定、-f でリアルタイム追跡、--since で時刻を絞り込むなど、オプションを組み合わせることで目的のログにすばやくたどり着けます。
オプションを組み合わせて確認するwebツールも用意しています → journalctl コマンド生成ツール
構文(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 オプションでログレベルを指定すると、指定レベル以上のログだけを表示します。
| レベル番号 | キーワード | 内容 |
|---|---|---|
| 0 | emerg | システムが使用不能 |
| 1 | alert | すぐに対処が必要 |
| 2 | crit | 重大なエラー |
| 3 | err | エラー |
| 4 | warning | 警告 |
| 5 | notice | 通常だが注目すべき |
| 6 | info | 情報 |
| 7 | debug | デバッグ情報 |
エラー以上のログだけ表示する
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 status や systemctl 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/syslog や dmesg の代わりに使います。
特定サービスのログを見るにはどうすればいいですか?
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 を使って確認すべき項目のチェックリスト
備考
journalctlは systemd-journald によるログを扱います。syslog(rsyslog, syslog-ng)と併用されることもあります。- ログは通常
/var/log/journal/に保存されますが、ディストリビューションによっては揮発性(メモリ上のみ)の場合もあります。 - フィルタは複数指定可能で、
-u・-p・--sinceを組み合わせると目的のログに素早くたどり着けます。
参考
- manページ: man7.org journalctl(1)
- systemd ドキュメント: https://www.freedesktop.org/wiki/Software/systemd/

コメント