tailコマンドでファイルがローテートされても追従する方法

tailコマンドでファイルがローテートされても追従する方法

Posted at April 8,2022 11:55 PM
Tag:[Linux]

tailコマンドでファイルがローテートされても追従する方法を紹介します。

1.問題点

tailコマンドでapacheのファイルを監視しています。

# cd /etc/httpd/logs/
# tail -f access_log

ログがローテートされると監視が途切れてしまいますが、方法が分かりません。

ということで、tailコマンドでファイルがローテートされても追従する方法を紹介します。

2.tailコマンドでファイルがローテートされても追従する

tailコマンドでファイルがローテートされても追従するには"-F"オプションを使用します。

# cd /etc/httpd/logs/
# tail -F access_log

3.サンプル

下記のサンプルで追従することを確認できます。

ターミナルAでファイル「test.txt」に任意の文字を書き込み、ターミナルBでtailを開始します。

ターミナルA

# echo foo > test.txt

ターミナルB

# tail -F test.txt
foo

ファイル名を変更します。tailしているターミナルに「~はアクセス不能になりました」という警告が表示されますが、そのままで問題ありません。

ターミナルA

# mv test.txt test_old.txt

ターミナルB

tail: `test.txt' はアクセス不能になりました: そのようなファイルやディレクトリはありません

再び元のファイル名に書き込むと、tailが再開します。

ターミナルA

# echo bar > test.txt

ターミナルB

# tail -F test.txt
bar

4.その他の方法

tailのバージョンによっては"-F"がサポートされていない場合がありますので、manコマンドでご確認ください。

"-F"がサポートされていない場合は、"--follow=name --retry"でも同様の動作になります。

# tail --follow=name --retry test.txt

"--follow=name"は、指定したファイル名に追従するオプションです。

"--retry"は、指定したファイルに対し何度もファイルオープンを試みるオプションです。

"--follow=name --retry"と"-F"は等価のようです。

なおこちらで動作を確認したところ、"--retry"は指定しなくても大丈夫かもしれません。

# tail --follow=name test.txt

色々ためしてみてください。

関連記事
トラックバックURL


コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)