カテゴリ: Linuxコマンド集 更新日: 2026/06/20

tail --max-unchanged-statsオプションを徹底解説!初心者でもわかるローテート監視の基本

tail --max-unchanged-statsオプション|ローテート監視時の更新チェック回数を指定する
tail --max-unchanged-statsオプション|ローテート監視時の更新チェック回数を指定する

先生と生徒の会話形式で理解しよう

生徒

「Linuxのtailコマンドって、ログファイルの最後の行を見られるんですよね?」

先生

「そうですね。特にtail -fとすると、ログファイルの更新をリアルタイムで監視できますよ。」

生徒

「でもログがローテートされたら、tailはどうなるんですか?」

先生

「良い質問です。実はそのときに便利なのが--max-unchanged-statsオプションなんです!」

1. tailコマンドとは?

1. tailコマンドとは?
1. tailコマンドとは?

tailコマンドは、ファイルの最後の数行を表示するLinuxコマンドです。特にログファイルなどのリアルタイム監視に使われることが多く、tail -fのようにオプションを組み合わせて使用します。

-fは「ファイルの更新を監視し続ける」という意味で、たとえばApacheのアクセスログなどをリアルタイムに確認したいときにとても便利です。

2. ログファイルのローテートとは?

2. ログファイルのローテートとは?
2. ログファイルのローテートとは?

ログのローテートとは、ファイルが大きくなりすぎるのを防ぐために、新しいログファイルに切り替える作業のことです。たとえば、/var/log/access.logというファイルが定期的にaccess.log.1などに名前を変えて、新しいaccess.logが作られる仕組みです。

このとき、tail -fで元のファイルを監視していた場合、新しいファイルに切り替わったことに気づかず、更新されなくなってしまう場合があります。

3. --max-unchanged-statsオプションとは?

3. --max-unchanged-statsオプションとは?
3. --max-unchanged-statsオプションとは?

--max-unchanged-statsオプションは、ファイルの「統計情報(stat)」が変わらなかった場合に、tailが「ログが切り替わったかも」と判断するまでの回数を指定します。

たとえば、次のように使います:


tail -F --max-unchanged-stats=5 /var/log/syslog

この例では、/var/log/syslogの「inode」や「サイズ」などの統計情報が5回連続で変わらなかったら、「もしかしてファイルがローテートされたかも?」と判断して、新しいファイルに切り替えてくれます。

4. -fと-Fの違いも知っておこう

4. -fと-Fの違いも知っておこう
4. -fと-Fの違いも知っておこう

tail -fはファイルの更新を監視しますが、ファイルがローテートされたときには新しいファイルを自動的に追跡してくれません。

それに対してtail -Fは、ローテートも考慮して新しいファイルを探してくれます。実は-F--follow=name --retryの省略形であり、ローテート対応版の-fと考えると分かりやすいです。

5. ローテート監視の具体的な例

5. ローテート監視の具体的な例
5. ローテート監視の具体的な例

以下のように--max-unchanged-statsを指定すると、ファイルの中身に変化がないことを何度か確認したあとで、ファイルがローテートされたとみなすことができます。


tail -F --max-unchanged-stats=3 /var/log/nginx/access.log

このように設定しておけば、ファイルのローテートに柔軟に対応しつつ、更新がないからといって即座にファイルを切り替えるわけではないので、誤判定も減らせます。

6. オプションの組み合わせ例

6. オプションの組み合わせ例
6. オプションの組み合わせ例

tailコマンドでは複数のオプションを同時に使えます。以下に、よく使う組み合わせ例を紹介します。

行数指定+ローテート監視


tail -n 20 -F --max-unchanged-stats=4 /var/log/messages

この例では、messagesファイルの最後の20行を表示しつつ、ファイルがローテートされたかどうかも監視しています。

複数ファイルを同時に監視


tail -F --max-unchanged-stats=6 /var/log/cron /var/log/auth.log

複数のログファイルを同時にローテート対応で監視することも可能です。

7. 他のtail系コマンドとの違い

7. 他のtail系コマンドとの違い
7. 他のtail系コマンドとの違い

他にもログ監視ツールとしてmultitailless +Fなどもありますが、tail -F--max-unchanged-statsは標準コマンドであり、余計なインストールが不要という点が魅力です。

cronやnginx、Apacheなどのログを扱う場面では、まずこのコマンドで様子を見るのが王道です。

8. --max-unchanged-statsの設定値はどう決める?

8. --max-unchanged-statsの設定値はどう決める?
8. --max-unchanged-statsの設定値はどう決める?

この値を小さくすると早くファイルの変化を検出しますが、通常の一時停止とローテートの違いを誤認するリスクもあります。

一方、値を大きくすれば慎重に判定されますが、新しいファイルへの切り替えに少し時間がかかることになります。

実運用では3〜6の範囲で様子を見るのが無難です。サーバのログ更新頻度に合わせて最適な値を設定しましょう。

関連記事:
カテゴリの一覧へ
新着記事
New1
圧縮・アーカイブ
bunzip2 -fオプションの使い方を完全ガイド!Linuxで圧縮ファイルを強制上書きする方法
New2
テキスト・データ処理
headコマンドとは?Linuxでファイルの先頭部分を表示する基本
New3
Linuxコマンドの基本
Linuxのパスの基本!絶対パスと相対パスの違いを初心者向けにやさしく解説
New4
ディスクとファイルシステム管理
mountコマンドの使い方を完全ガイド!初心者でもわかるLinuxのファイルシステムマウント方法
人気記事
No.1
Java&Spring記事人気No1
ファイル・ディレクトリ操作
findコマンドの使い方を完全ガイド!初心者でもわかるLinuxのファイル検索の基本
No.2
Java&Spring記事人気No2
テキスト・データ処理
catコマンドとは?Linuxでファイル内容を表示・連結する基本
No.3
Java&Spring記事人気No3
ファイル・ディレクトリ操作
cd ~ の使い方を完全解説!ホームディレクトリへの移動方法と初心者向けLinuxコマンド入門
No.4
Java&Spring記事人気No4
圧縮・アーカイブ
tarコマンドの使い方を完全ガイド!初心者でもわかるLinuxのアーカイブ作成と解凍の基本