Linuxのログファイル入門|tailとlessでサーバーの状態を読む方法

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)【Linux入門】初心者のための基礎知識・講座 > Linuxのログファイル入門|tailとlessでサーバーの状態を読む方法
「サーバーで何かエラーが起きているみたいだけど、どこを確認すればいいの?」
Linuxを触り始めた方が最初につまずくのが、トラブル時の調査方法です。

Windowsならイベントビューアーを開けばよいのですが、Linuxでは「ログファイルを直接読む」のが基本です。
最初は「どこにあるの?」「どうやって読むの?」と戸惑うかもしれません。
でも、tailless の2つのコマンドを覚えるだけで、ほとんどの状況に対応できます。

この記事では、Linuxのログファイルとは何か、どこにあるか、そして実際の読み方を初心者向けに解説します。
ターミナルをいじりながら読んでいただくと、より理解が深まります。

この記事のポイント

・Linuxのログは /var/log/ ディレクトリに集約されている
・tail -f で「リアルタイムにログを流す」のが現場の基本技
・less でページ送り+検索をしながらじっくり読む
・grep と組み合わせてエラーだけを抽出する方法も覚えよう


「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

Linuxのログファイルとは何か

Linuxでは、OSやアプリケーションが動作の記録をテキストファイルとして書き残します。
この記録ファイルを「ログファイル」といいます。

Windowsのイベントログが専用ビューアーを使うのとは異なり、Linuxのログはただのテキストファイルです。
つまり、catlesstailgrep などのコマンドでそのまま読めます。

なぜログを読む必要があるのか?
・サービスが起動しない → エラーの原因がわからない
・不正アクセスがあったかもしれない → いつ・どこから来たか確認したい
・定期実行のスクリプトが失敗した → 何が起きたか記録を確認したい

このような場面で、ログを読む力は欠かせません。
「ログが読める」だけで、トラブル対応の速度が大きく変わります。

ログファイルの保存場所

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 -fgrep error の2つから始めて、少しずつ使い方を広げていきましょう。

より実践的なスキルを身につけたい方は、以下の関連記事もあわせて参考にしてください。

ログ調査をさらに深める関連記事

ログ確認を素早くこなすには、Linuxの基本コマンドの組み合わせが不可欠です。
以下の記事で各コマンドの使い方を確認しておきましょう。

grepコマンドで文字列を検索する方法|複数ファイルやディレクトリ除外も
psコマンドでプロセスを確認する方法|auxと-efの違いやgrep検索も
crontabコマンドの設定と書き方|動かない時のログ確認まで
chmodコマンドで権限を変更する方法|755と644の違いや一括変更も
findコマンドでファイル・ディレクトリを検索する方法|名前や更新日時で探す
LinuxのIPアドレスを確認する
vi(vim)で文字列を検索・置換する方法|ハイライトの消し方や次への移動も

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として15年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。