Linuxのログを確認する方法(場所・コマンド・見方)
サービスが起動しない、突然落ちた、誰かが不正にログインしたかもしれない。原因を探るとき、最初に見るのがログです。ここでは、ログの保存場所と、tail・less・grep・journalctl を使った確認方法を整理します。
どんな場面か
Linuxでは、OSやサービスの動作が「ログ」として記録されます。画面にエラーが出ないまま動作がおかしいときや、過去に起きた出来事を後から調べたいときは、ログを読むことが調査の出発点になります。確認の流れは、「どこにログがあるか知る」「最新の部分を見る」「必要な行に絞り込む」の3段階です。
ログの主な保存場所
ログの多くは /var/log の下に保存されます。ディストリビューションによってファイル名が異なる点に注意してください。
| ログの種類 | Debian系・Ubuntu | RHEL系 |
|---|---|---|
| システム全般 | /var/log/syslog | /var/log/messages |
| ログイン・認証・sudo | /var/log/auth.log | /var/log/secure |
| カーネル | /var/log/kern.log、dmesg | dmesg |
| Webサーバー(例) | /var/log/nginx/、/var/log/apache2/ | /var/log/nginx/、/var/log/httpd/ |
ディストリビューションの設定によっては、これらのファイルが存在せず、ログが systemd のジャーナルにだけ記録されている場合もあります。その場合は、後述の journalctl で確認します。
ログの確認手順
ステップ1:ログの場所を確認する
$ ls -lt /var/log | head # 更新が新しい順に表示
$ ls -l /var/log/nginx/
調べたいサービスのログがどこにあるかは、まず /var/log を ls で確認します。最近更新されたファイルほど、いま動いているサービスのログである可能性が高くなります。権限がなくて読めないときは、sudo を付けて実行します。
ステップ2:最新の内容を見る
$ tail -n 50 /var/log/syslog # 末尾の50行を表示
$ tail -f /var/log/nginx/error.log # 追記される内容をリアルタイムに表示(Ctrl+cで終了)
ログは新しい出力が末尾に追記されるため、まず tail で最後の部分を見ます。問題を再現しながら -f で追いかけると、操作した瞬間に出たエラーを確認できます。
ステップ3:全体を読む・検索する
$ less /var/log/syslog # ページ送りで閲覧(/で検索、qで終了)
$ grep -i "error" /var/log/syslog # errorを含む行だけ表示(大文字小文字を無視)
$ grep -n -B2 -A2 "failed" /var/log/auth.log # 前後2行も一緒に表示
ログが長いときは less で読み、/ に続けてキーワードを入力すると検索できます。調べたい言葉が決まっているなら grep が手早く、-B・-A で前後の行も見ると原因の流れが分かります。
ステップ4:systemdのログ(journalctl)を使う
$ journalctl -u nginx # 指定したサービスのログ
$ journalctl -u nginx --since "1 hour ago" # 1時間前以降に絞る
$ journalctl -p err -b # 今回の起動以降のエラー以上
$ journalctl -f # リアルタイムに追いかける
systemdで動くサービスのログは、journalctl でまとめて見られます。-u でサービス名、--since と --until で時間帯、-p で重要度を指定でき、「このサービスの、この時間の、エラーだけ」という絞り込みが簡単です。
ステップ5:過去のログ・圧縮されたログを探す
$ ls /var/log/nginx/
access.log access.log.1 access.log.2.gz
$ zgrep "error" /var/log/nginx/error.log.*.gz
ログは logrotate によって定期的に切り替えられ、古いものは .1 や .gz を付けて保存されます。圧縮されたログは zgrep や zcat、zless で、展開せずにそのまま読めます。
ステップ6:ログイン履歴を調べる
$ last -n 10 # 直近のログイン履歴
$ sudo lastb -n 10 # ログインに失敗した履歴
不正なログインを疑うときは、last や lastb で、いつ・どこから接続があったかを確認します。認証ログ(auth.log や secure)と合わせて見ると、より詳しく分かります。
解決方法・次の一手
- エラーメッセージが見つかった場合:
メッセージの文言をそのまま検索し、設定ファイルの誤りや権限、ディスク容量などの原因を確認します。 - ログが空、または古いままの場合:
サービスが動いていない、ログの出力先が違う、ディスクが満杯で書き込めない、といった可能性があります。systemctl statusやdf -hで確認しましょう。 - ログが見つからない場合:
ジャーナルにだけ記録されている可能性があります。journalctlで確認してください。
ログには、ユーザー名やIPアドレスなどの個人情報・機密情報が含まれることがあります。
ログをそのまま外部に貼り付けたり共有したりする前に、必要な部分だけを抜き出し、機密情報を伏せてください。
また、ログファイルを
rm で消したり編集したりすると、後から原因を調べられなくなります。ログの種類と
rsyslog・journald の仕組みは中級「システムログと時刻管理」、tail・less の基本は初級「ファイルの中身を見る」、grep による絞り込みは中級「テキストフィルタ」で扱っています。コマンド単体の使い方は journalctlの使い方・tailの使い方・grepの使い方でも確認できます。
練習用ターミナルでも試せます。