tailコマンドでファイルがローテートされても追従する方法
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
色々ためしてみてください。
Posted by yujiro このページの先頭に戻る
- svnでファイルやディレクトリを削除する方法
- phpMyAdminで「unknown system variable 'lc_messages'」となる場合の対処
- Linux(CentOS)でapxsがみつからない場合の対処
- PHP7.3とApacheを連携させる方法
- CentOS 6にPHP7.3をインストールする方法
- phpMyAdminのインストールで「PYCURL ERROR 22」になる場合の対処
- Linuxにnkfをインストールする方法
- cronの「tput: No value for $TERM and no -T specified」というエラーの原因と対処
- さくらのVPSに送信メールサーバを設定する方法
- killコマンドでメッセージを出力させない方法
- コマンド実行結果を標準出力とファイルの両方に出力する方法
- vimで開くファイルをコマンドラインで編集する方法
- 多段ssh接続が必要なサーバ上のファイルをvimで直接編集する方法
- Linuxシェルでコマンド実行結果を入れた変数の改行を出力する方法
- cgroupsの利用方法
トラックバックURL
コメントする
greeting