Linuxのログを確認する方法(場所・コマンド・見方)

サービスが起動しない、突然落ちた、誰かが不正にログインしたかもしれない。原因を探るとき、最初に見るのがログです。ここでは、ログの保存場所と、tail・less・grep・journalctl を使った確認方法を整理します。

どんな場面か

Linuxでは、OSやサービスの動作が「ログ」として記録されます。画面にエラーが出ないまま動作がおかしいときや、過去に起きた出来事を後から調べたいときは、ログを読むことが調査の出発点になります。確認の流れは、「どこにログがあるか知る」「最新の部分を見る」「必要な行に絞り込む」の3段階です。

ログの主な保存場所

ログの多くは /var/log の下に保存されます。ディストリビューションによってファイル名が異なる点に注意してください。

ログの種類Debian系・UbuntuRHEL系
システム全般/var/log/syslog/var/log/messages
ログイン・認証・sudo/var/log/auth.log/var/log/secure
カーネル/var/log/kern.log、dmesgdmesg
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の使い方でも確認できます。
練習用ターミナルでも試せます。