tail -Fオプションの使い方を完全ガイド!ログローテート後も追跡する方法
生徒
「Linuxでログファイルをリアルタイムに監視してるんですけど、ファイルがローテートされたら追えなくなってしまいます…どうしたらいいですか?」
先生
「そんなときは、tailコマンドの-Fオプションを使うと便利ですよ。」
生徒
「それって-fとは違うんですか?」
先生
「はい、-Fはファイルが入れ替わっても追跡を続けてくれるんです。詳しく見ていきましょう!」
1. tailコマンドとは?
tail(テイル)コマンドは、Linuxでファイルの末尾を表示するコマンドです。特にログファイルなど、どんどん追記されるファイルの「最後の数行」を確認したいときによく使われます。
例えば、Webサーバーのアクセスログの最新の記録を見たいときなどに便利です。
tail /var/log/syslog
(ファイルの末尾10行が表示されます)
2. -fオプションの基本|追記をリアルタイムで追う
tail -fとすることで、ファイルに新しく書き込まれた内容をリアルタイムで追いかけることができます。まるで生中継のようにファイルの更新が表示されていくため、「ログ監視」に最適です。
tail -f /var/log/syslog
(新しいログ行が追加されると自動で表示される)
ただし、この-fは、ファイルが途中で「別のファイルに差し替えられた」場合には、追跡をやめてしまいます。これが問題になるのが次の「ログローテート」です。
3. ログローテートとは?初心者向けにやさしく解説
Linuxでは、ログファイルが大きくなりすぎないように、定期的に古いログを別のファイルに分割して保存する仕組みがあります。これを「ログローテート」と呼びます。
例えば/var/log/syslogが大きくなったら、自動で/var/log/syslog.1にリネームされて、新しい/var/log/syslogが作られます。
このとき、-fオプションでは「新しく作られたファイル」までは追いかけられません。結果としてログ監視が止まってしまいます。
4. -Fオプションを使えばローテート後も安心!
そこで活躍するのが-F(大文字)オプションです。これは「ファイルのローテートにも対応する」という機能を持っています。
-Fは、内部的には--follow=nameと--retryを組み合わせた動作になります。つまり、ファイルが削除されて新しく作られても、同じパスのファイルを探し続けてくれるのです。
tail -F /var/log/syslog
(ログローテート後も監視が継続される)
このように、-fではなく-Fを使うだけで、ログファイルの監視を止めずに続けることができるのです。
5. -fと-Fの違いをまとめて比較
| オプション | 動作 | ローテート対応 |
|---|---|---|
-f | ファイル末尾をリアルタイムで表示 | ✕(追跡終了) |
-F | ファイルが切り替わっても追跡継続 | 〇(自動追跡) |
6. tail -Fの活用例|ログ監視やデバッグに最適
例えばApacheのアクセスログをリアルタイムで見たい場合、次のように使います。
tail -F /var/log/apache2/access.log
192.168.1.10 - - [16/Sep/2025:15:45:01 +0900] "GET /index.html HTTP/1.1" 200 512
ファイルが切り替わっても監視が途切れず続くため、デバッグや運用時のログ確認に非常に便利です。
7. よく使われるオプションの組み合わせ
-nオプションと組み合わせると、最初に表示する行数を指定できます。たとえば最新の20行を表示してから追跡を始めたい場合は次のようにします。
tail -n 20 -F /var/log/syslog
(最新20行+その後の更新を表示)
8. 他の類似コマンドとの比較|lessやmultitailとの違い
lessコマンドでもFキーを使えば末尾を追跡できますが、ローテート後は自動では追えません。
また、multitailというツールを使えば、複数のログを色付きで表示できますが、インストールが必要になります。
その点、tail -Fは標準で使えて、シンプルに強力な監視ができるのが特徴です。
9. tail -Fはsudo不要?一般ユーザーで使える?
tail -Fは基本的に一般ユーザーでも使用可能です。ただし、ログファイルの読み取り権限が必要です。
たとえば/var/log/syslogや/var/log/auth.logなどは、通常rootのみ読み取り可能なことがあります。その場合はsudoを使う必要があります。
sudo tail -F /var/log/auth.log
(認証ログをroot権限で追跡)