Linux tailコマンド完全ガイド|ログ監視・追尾・出力制御・トラブル対応

  • URLをコピーしました!

tail はファイルの末尾を表示するコマンドで、特にログファイルのリアルタイム監視や解析に多用されます。
単なる末尾表示だけで終わらず、**リアルタイム追尾・複数ファイル監視・jqやgrepとの組み合わせ・タイムスタンプ付与**など、トラブル対応での使い方が増えています。
この記事では基本から運用例、実務での活用例、よくある課題とその解決まで網羅します。

📌 他のLinuxコマンドもまとめて確認したい方へ
ファイル操作・検索・テキスト処理など用途別に整理した総合まとめはこちら。
Linuxコマンド大全

目次

目次

基本構文

tail [オプション] ファイル名

ファイルの末尾を表示します。引数なしではファイルの最後10行を表示します。

主なオプション

オプション意味用途
-n 数末尾から指定行数表示最新ログだけ見る
-fリアルタイム追尾(follow)ログ監視
--pid=PID指定プロセス終了で追尾終了デーモン監視
-qファイル名を表示しない複数ファイル時に簡潔化

よく使う例

基本末尾表示

tail file.txt

最新 50 行だけ表示

tail -n 50 /var/log/syslog

リアルタイムログ追尾(常に更新を表示)

tail -f /var/log/syslog

プロセスが終了したら追尾終了

tail --pid=$$ -f /var/log/syslog

複数ファイルを同時に追尾

tail -f app1.log app2.log

リアルタイム監視の応用

grep と組み合わせる

tail -f /var/log/syslog | grep ERROR

特定のログだけ抽出して監視できます。

jq で JSON ログを整形

tail -f logs.json | jq .

ログにタイムスタンプを付与

tail -f /var/log/syslog | while read LINE; do date; echo "$LINE"; done

トラブル対応での活用例

プロセス停止の前後ログ確認

tail -n 100 /var/log/syslog
sudo systemctl restart httpd
tail -n 100 /var/log/syslog

一定時間だけログ追尾

timeout 60 tail -f /var/log/syslog

複数ログフィルタリング + 追尾

tail -f app.log | awk '{print $1, $2, $3, $NF}'

よくある困りごとと対策

ログが更新されない・止まっているように見える

原因は、大きく以下:

  • ファイルがローテート済みで追尾対象が変わっている
  • シンボリックリンクの実体が変わった

対処:再度対象ファイルを指定するか、ローテート後のログ名を追尾する。

tail -f が停止しない

–pid オプションを使うことでプロセス終了時に追尾を止めると便利です。

FAQ

Q1. tail と head の違いは?
tail は末尾、head は先頭を表示します。

Q2. ファイルサイズが大きすぎて tail が遅い
tail は末尾のみ読むため通常早いですが、シーク領域が大きいとまれに読み込み遅延が出る場合があります。

Q3. tail -f で追尾が終わらない
–pid オプションを使った監視終了方法を検討してください。

  • head(先頭表示)
  • less(スクロール閲覧)
  • grep(検索フィルタ)
  • awk(フィールド抽出)
目次