連載シリーズ
Linux管理・運用の基本
システム管理者のための実践ガイド
システム管理者のための実践ガイド
Linuxサーバーで「サービスが急に止まった」「通信エラーが出る」といったトラブルに遭遇した際、推測だけで動くのは危険です。最速で解決に導くカギは、常にログの中にあります。今回は、systemd環境の標準ツールであるjournalctlと、おなじみのgrepを組み合わせ、膨大なデータから「真犯人」を特定する実務テクニックを解説します。
原因不明の挙動を確認する際は、ログを流しっぱなしにして操作を再現させるのが定石です。
# -f (follow) で最新ログをリアルタイム追跡
sudo journalctl -u nginx -f
「何かが起きているのはわかるが、どこにエラーがあるか不明」な時に、grepと組み合わせてノイズを削ります。
# -i で大文字小文字を無視して検索
sudo journalctl -u nginx | grep -i "error"
数万行のログが流れて調査が捗らない時は、最新の100行程度に絞り込み、そのままターミナルに表示(ページャーを無効化)させると効率的です。
# -n 100 で最新100行、--no-pager でless画面に移行せず出力
sudo journalctl -u nginx -n 100 --no-pager
| コマンド例 | 説明 |
|---|---|
journalctl -xe |
ログ末尾へ移動(-e)し、補足説明付き(-x)で表示する便利セット |
journalctl --since "10 min ago" |
直近10分間のログだけを表示する |
journalctl -p 3 |
エラー(Priority 3)以上の深刻なログのみを表示 |
journalctl -k |
OSの起動トラブルやハードウェア起因の調査に使うカーネルログ |
sudoを付加してください。--since "2026-04-29 04:00:00" --until "2026-04-29 04:10:00"のように範囲指定すると、障害発生時刻のログを確実に捕まえられます。--no-pagerや時間指定の書式は、古いディストリビューションでは一部挙動が異なる場合があるため、man journalctlでの確認を推奨します。障害発生時、推測から入る人ほど時間を失います。まずログを見る習慣をつけることが、強いエンジニアへの第一歩です。journalctlとgrepを使いこなし、迷いのない調査を実現しましょう。
この記事がLinuxのログ調査について理解を深める一助となれば幸いです。
ご覧いただきありがとうございました。