Linuxを触り始めた方が最初につまずくのが、トラブル時の調査方法です。
Windowsならイベントビューアーを開けばよいのですが、Linuxでは「ログファイルを直接読む」のが基本です。
最初は「どこにあるの?」「どうやって読むの?」と戸惑うかもしれません。
でも、
tail と less の2つのコマンドを覚えるだけで、ほとんどの状況に対応できます。この記事では、Linuxのログファイルとは何か、どこにあるか、そして実際の読み方を初心者向けに解説します。
ターミナルをいじりながら読んでいただくと、より理解が深まります。
この記事のポイント
・Linuxのログは /var/log/ ディレクトリに集約されている
・tail -f で「リアルタイムにログを流す」のが現場の基本技
・less でページ送り+検索をしながらじっくり読む
・grep と組み合わせてエラーだけを抽出する方法も覚えよう
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
Linuxのログファイルとは何か
Linuxでは、OSやアプリケーションが動作の記録をテキストファイルとして書き残します。この記録ファイルを「ログファイル」といいます。
Windowsのイベントログが専用ビューアーを使うのとは異なり、Linuxのログはただのテキストファイルです。
つまり、
cat・less・tail・grep などのコマンドでそのまま読めます。なぜログを読む必要があるのか?
・サービスが起動しない → エラーの原因がわからない
・不正アクセスがあったかもしれない → いつ・どこから来たか確認したい
・定期実行のスクリプトが失敗した → 何が起きたか記録を確認したい
このような場面で、ログを読む力は欠かせません。
「ログが読める」だけで、トラブル対応の速度が大きく変わります。
ログファイルの保存場所
Linuxのログは、ほぼすべて/var/log/ ディレクトリに保存されています。# /var/log/ の中身を確認する $ ls /var/log/ anaconda cron maillog secure yum.log audit dmesg messages spooler boot.log lastlog ntpstats tallylog
| ファイル名 | 内容 | よく使う場面 |
|---|---|---|
| /var/log/messages | システム全般のメッセージ(RHEL/CentOS系) | OS起動エラー・カーネルメッセージ |
| /var/log/syslog | システム全般のメッセージ(Ubuntu/Debian系) | OS起動エラー・各種デーモンのログ |
| /var/log/secure | 認証・SSH接続の記録(RHEL系) | 不正ログイン試行の確認 |
| /var/log/auth.log | 認証・SSH接続の記録(Ubuntu系) | 不正ログイン試行の確認 |
| /var/log/cron | cronの実行ログ | 定期実行スクリプトが動いているか確認 |
| /var/log/boot.log | 起動時のサービス起動ログ | 起動失敗したサービスの特定 |
| /var/log/dmesg | カーネルのハードウェア認識ログ | ディスク・ネットワークカードのエラー |
1. ディストリビューション別の違いに注意
RHEL9 / Rocky Linux 9 を使っている場合は/var/log/messages、Ubuntu 24.04 LTS を使っている場合は /var/log/syslog を確認します。どちらを使っているかわからない場合は、次のコマンドで確認できます。
# OSの種類を確認する $ cat /etc/os-release NAME="Rocky Linux" VERSION="9.4 (Blue Onyx)" ... # または $ cat /etc/redhat-release Rocky Linux release 9.4 (Blue Onyx)
tail コマンドでリアルタイムにログを見る
ログを見る時に最も使うのがtail コマンドです。特に
-f オプション(フォロー)は、サーバー作業中に「今この瞬間のログ」を流し続ける技として必須です。2. 基本の使い方(最終10行を表示)
# ファイルの末尾10行を表示する(デフォルト) $ sudo tail /var/log/messages Apr 27 09:01:22 web01 kernel: eth0: renamed from veth3a4b5c6d Apr 27 09:01:22 web01 NetworkManager[1234]:
[1714176082] device (eth0): state change Apr 27 09:02:00 web01 systemd[1]: Started Session 5 of user tomohiro. ... # 末尾30行を表示したい場合 $ sudo tail -n 30 /var/log/messages
3. -f オプションでリアルタイム監視
tail -f は、ファイルの末尾を表示しながら、新しい行が書き込まれるたびに自動で追記表示します。サービスを再起動しながら、別のターミナルで
tail -f を走らせておくと、エラーが起きた瞬間を捉えられます。# リアルタイムでログを監視する(Ctrl+C で終了) $ sudo tail -f /var/log/messages Apr 27 09:15:01 web01 CROND[5678]: (root) CMD (/usr/lib64/sa/sa1 1 1) Apr 27 09:20:01 web01 CROND[5679]: (root) CMD (/usr/lib64/sa/sa1 1 1) # ここで新しいログが書き込まれると自動で表示される
・Apache や Nginx を再起動しながら、エラーログに何が出るか確認する
・アプリのデプロイ中に messages を流して異常を監視する
・SSH接続試行が来ていないか secure を監視する
less コマンドで過去のログを検索しながら読む
tail -f はリアルタイム監視に向いていますが、「1時間前に何があったか」を調べたい場合は less が便利です。less は長いファイルをページ単位で表示し、キーワード検索もできます。4. less でログファイルを開く
# lessでログを開く $ sudo less /var/log/messages # lessを開いたら以下のキー操作が使える # スペース or f : 1ページ進む # b : 1ページ戻る # G : ファイルの末尾に移動 # g : ファイルの先頭に移動 # /キーワード : 下方向に検索(n で次の一致、N で前の一致) # q : 終了
ファイルを開いた状態で
/error と入力してEnterを押すと、「error」という文字列が含まれる行に移動します。n を押すと次の一致箇所、N を押すと前の一致箇所に移動します。5. ログファイルをlessで開き末尾から読む
ログファイルは時系列順に書かれているため、新しい情報はファイルの末尾にあります。less +G でファイルを開くと、最初から末尾が表示されます。# lessで末尾から開く(+G = ファイル末尾にジャンプ) $ sudo less +G /var/log/messages
grep でエラーだけを抽出する
ログファイルは数千行に及ぶこともあります。grep を使って、エラーが含まれる行だけを取り出すと効率よく調査できます。6. grep でエラーを抽出する基本
# "error" を含む行を表示する(大文字小文字を区別) $ sudo grep error /var/log/messages # 大文字小文字を区別しない(-i) $ sudo grep -i error /var/log/messages Apr 27 08:03:41 web01 kernel: [12345.678901] ata1.00: status: { DRDY ERR } Apr 27 08:03:41 web01 kernel: [12345.678902] ata1.00: error: { UNC } # 前後の行も表示して文脈を把握する(-C 3 = 前後3行) $ sudo grep -i -C 3 error /var/log/messages
7. 特定の時刻のログだけを確認する
ログの各行は「月 日 時刻 ホスト名 プログラム名: メッセージ」の形式です。たとえば「Apr 27 09:」で始まる行だけを取り出すと、その時間帯のログを絞り込めます。
# 特定の時刻帯(09時台)のログを抽出する $ sudo grep "Apr 27 09:" /var/log/messages # パイプでエラーもあわせて絞り込む $ sudo grep "Apr 27 09:" /var/log/messages | grep -i error
journalctl でsystemdのログを確認する
RHEL9 / Rocky Linux 9 / Ubuntu 22.04以降では、journalctl コマンドでsystemdのログを確認できます。/var/log/messages だけでは見えないサービスのログも、journalctl では確認できる場合があります。8. journalctl の基本的な使い方
# 全ログを表示(lessで自動ページ送り) $ sudo journalctl # 末尾50行を表示 $ sudo journalctl -n 50 # リアルタイム監視(tail -f と同じ感覚) $ sudo journalctl -f # 特定のサービスのログだけ確認(例: nginx) $ sudo journalctl -u nginx # 今日のログだけ確認 $ sudo journalctl --since today # エラーレベル以上のみ表示 $ sudo journalctl -p err
・
/var/log/messages → システム全般の旧来形式ログ。テキストファイルなのでgrepと相性が良い・
journalctl → systemdサービスのログ。フィルタ機能が豊富で絞り込みやすいよくあるトラブルシュート事例
9. サービスが起動しない時の確認手順
「さっき設定ファイルを変更したら Apache が起動しなくなった」という場面を想定します。# Step 1: サービスの状態を確認する $ sudo systemctl status httpd * httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service) Active: failed (Result: exit-code) since Sun 2026-04-27 09:30:01 JST Process: 12345 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND (code=exited) Main PID: 12345 (code=exited, status=1/FAILURE) # Step 2: journalctl でエラー詳細を確認する $ sudo journalctl -u httpd -n 30 Apr 27 09:30:01 web01 httpd[12345]: AH00526: Syntax error on line 45 of /etc/httpd/conf/httpd.conf: Apr 27 09:30:01 web01 httpd[12345]: Invalid command 'ServerNmae', perhaps misspelled # → 設定ファイルの45行目に「ServerName」のタイポがあることがわかる
10. SSH への不正アクセスを確認する
# RHEL系: secureログで認証失敗を確認 $ sudo grep "Failed password" /var/log/secure | tail -20 Apr 27 09:10:34 web01 sshd[6789]: Failed password for invalid user admin from 192.0.2.100 port 51234 ssh2 Apr 27 09:10:36 web01 sshd[6790]: Failed password for root from 192.0.2.100 port 51235 ssh2 # Ubuntu系: auth.logで確認 $ sudo grep "Failed password" /var/log/auth.log | tail -20 # 攻撃元IPアドレスの集計(何回アクセスされているか) $ sudo grep "Failed password" /var/log/secure | awk '{print $(NF-3)}' | sort | uniq -c | sort -rn | head -10 142 192.0.2.100 38 198.51.100.200
本記事のまとめ
Linuxのログファイルを読む基本的な方法をまとめます。| やりたいこと | コマンド |
|---|---|
| ログの末尾を表示する | tail /var/log/messages |
| リアルタイムでログを監視する | tail -f /var/log/messages |
| ログをページ送りしながら読む | less /var/log/messages |
| ログの末尾からlessで開く | less +G /var/log/messages |
| エラーだけを抽出する | grep -i error /var/log/messages |
| systemdサービスのログを確認する | journalctl -u サービス名 |
| リアルタイムでjournalctlを監視する | journalctl -f |
最初は
tail -f と grep error の2つから始めて、少しずつ使い方を広げていきましょう。より実践的なスキルを身につけたい方は、以下の関連記事もあわせて参考にしてください。
ログ調査をさらに深める関連記事
ログ確認を素早くこなすには、Linuxの基本コマンドの組み合わせが不可欠です。以下の記事で各コマンドの使い方を確認しておきましょう。
・grepコマンドで文字列を検索する方法|複数ファイルやディレクトリ除外も
・psコマンドでプロセスを確認する方法|auxと-efの違いやgrep検索も
・crontabコマンドの設定と書き方|動かない時のログ確認まで
・chmodコマンドで権限を変更する方法|755と644の違いや一括変更も
・findコマンドでファイル・ディレクトリを検索する方法|名前や更新日時で探す
・LinuxのIPアドレスを確認する
・vi(vim)で文字列を検索・置換する方法|ハイライトの消し方や次への移動も
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
- 次のページへ:Linuxシェルスクリプト入門|初心者でも動かせる自動化の第一歩
- 前のページへ:Linuxのディスク管理入門|dfとduで空き容量を確認する方法を初心者向けに解説
- この記事の属するカテゴリ:【Linux入門】初心者のための基礎知識・講座へ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。
登録無料・いつでも解除できます