journalctl は systemd が集めたログを読むコマンドです。サービスで絞る `-u`、末尾だけ見る `-n`、流れ続けるログを追う `-f` の使い方を、ブラウザ上のターミナルで打ちながら確認できます。
最終更新: 2026-09-07
journalctl [オプション]
systemd が集めたログを新しい順に並べて出します。
サービス名で絞るのが基本です。
$ journalctl -u nginx
Mar 23 08:00:01 webterm-server nginx[1001]: Starting A high performance web server and a reverse proxy server...
Mar 23 08:00:02 webterm-server nginx[1001]: nginx/1.18.0
Mar 23 08:00:02 webterm-server nginx[1001]: Started A high performance web server and a reverse proxy server.
Mar 23 09:15:30 webterm-server nginx[1001]: conflicting server name "localhost" on 0.0.0.0:80, ignored
Mar 23 10:30:00 webterm-server nginx[1001]: 1024 worker_connections are enough for most sites
左から、日時・ホスト名・プロセス名とその PID・メッセージです。
systemctl status が要約しか出さないのに対し、こちらは記録そのものが読めます。
ログは長いので、たいてい末尾だけ見れば足ります。
$ journalctl -u nginx -n 2
Mar 23 09:15:30 webterm-server nginx[1001]: conflicting server name "localhost" on 0.0.0.0:80, ignored
Mar 23 10:30:00 webterm-server nginx[1001]: 1024 worker_connections are enough for most sites
-u を付けなければ、全サービスをまとめた記録になります。
$ journalctl -n 5
Mar 23 09:15:30 webterm-server nginx[1001]: conflicting server name "localhost" on 0.0.0.0:80, ignored
Mar 23 09:45:12 webterm-server mysql[1201]: Aborted connection 42 to db: 'myapp' user: 'webapp' host: '10.0.0.5' (Got timeout reading communication packets)
Mar 23 10:00:01 webterm-server cron[501]: (root) CMD (/usr/lib/apt/apt.systemd.daily)
Mar 23 10:30:00 webterm-server nginx[1001]: 1024 worker_connections are enough for most sites
Mar 23 10:30:15 webterm-server sshd[456]: Received disconnect from 192.168.1.10 port 52341:11: disconnected by user
「どのサービスが直前に何をしたか」を横断で見たいときは、この形が速いです。
-r を付けると、新しいものが上に来ます。
$ journalctl -u nginx -r
Mar 23 10:30:00 webterm-server nginx[1001]: 1024 worker_connections are enough for most sites
Mar 23 09:15:30 webterm-server nginx[1001]: conflicting server name "localhost" on 0.0.0.0:80, ignored
Mar 23 08:00:02 webterm-server nginx[1001]: Started A high performance web server and a reverse proxy server.
Mar 23 08:00:02 webterm-server nginx[1001]: nginx/1.18.0
Mar 23 08:00:01 webterm-server nginx[1001]: Starting A high performance web server and a reverse proxy server...
キーワードで探すときは grep につなぎます。
$ journalctl | grep Aborted
Mar 23 09:45:12 webterm-server mysql[1201]: Aborted connection 42 to db: 'myapp' user: 'webapp' host: '10.0.0.5' (Got timeout reading communication packets)
どのサービスの話かは、行の中のプロセス名(ここでは mysql[1201])で分かります。
そこまで分かったら、そのサービスに絞って前後を読みます。
$ journalctl -u mysql
Mar 23 08:00:05 webterm-server mysql[1201]: Starting MySQL Community Server...
Mar 23 08:00:08 webterm-server mysql[1201]: InnoDB: Buffer pool(s) load completed at 080008
Mar 23 08:00:09 webterm-server mysql[1201]: Started MySQL Community Server.
Mar 23 09:45:12 webterm-server mysql[1201]: Aborted connection 42 to db: 'myapp' user: 'webapp' host: '10.0.0.5' (Got timeout reading communication packets)
-f は、新しい行が出るたびに表示し続けます。
$ journalctl -u nginx -f
Mar 23 08:00:01 webterm-server nginx[1001]: Starting A high performance web server and a reverse proxy server...
Mar 23 08:00:02 webterm-server nginx[1001]: nginx/1.18.0
Mar 23 08:00:02 webterm-server nginx[1001]: Started A high performance web server and a reverse proxy server.
Mar 23 09:15:30 webterm-server nginx[1001]: conflicting server name "localhost" on 0.0.0.0:80, ignored
Mar 23 10:30:00 webterm-server nginx[1001]: 1024 worker_connections are enough for most sites
実機ではここで待ち状態になり、新しい行が出るたびに追加されます。 別の画面から操作を行い、その結果をこちらで見る、という使い方をします。 終わるときは Ctrl+C です。
journalctl は、サービスが期待どおりに動かない理由を読むときに打つコマンドです。
| 場面 | 打ち方 |
|---|---|
| 起動に失敗した理由を読む | journalctl -u nginx -n 50 |
| デプロイ中の様子を見る | journalctl -u myapp -f |
| 直前に何が起きたかを横断で見る | journalctl -n 20 |
| キーワードで探す | journalctl | grep Aborted |
| 新しい順に読む | journalctl -u nginx -r |
systemctl status で状態を見て、journalctl -u で理由を読む。
この順番がサーバー調査の型です。
-u のサービス名は systemctl と同じです。
nginx と nginx.service はどちらでも通ります。
名前が違うと、記録が無いと言われます。
$ journalctl -u nosuchservice
-- No entries --
古いログは消えていることがあります。 journal には保存の上限があり、超えた分から消えます。 「昨日のログが無い」ときは、消えたのか出ていないのかを分けて考えてください。
長いときはページャや grep と組みます。
そのまま打つと画面が流れます。
-n で件数を切る、grep で絞る、less に渡す、のどれかを最初から付けるのが楽です。
webterm.appこのサイト
ターミナル応用
特定場面で役立つコマンドを学ぶ
learn.webterm.app別のサイト
