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 このページの先頭に戻る
- VMをundefineできない場合の対処
- cpanflute2でエラーになる場合の対処
- シェルスクリプトをバイナリ化する「shc」
- OpenSSLで文字列を暗号化・複号化する方法
- sshログインに時間がかかる場合の対処
- vi/vimで範囲指定して置換する方法
- vi/vimでマークした行に移動する方法
- vi/vimで複数行を一括削除する方法
- LinuxでOSキャッシュをクリアする方法
- lessで検索文字列だけを表示する方法
- svnでファイルやディレクトリを削除する方法
- phpMyAdminで「unknown system variable 'lc_messages'」となる場合の対処
- Linux(CentOS)でapxsがみつからない場合の対処
- PHP7.3とApacheを連携させる方法
- CentOS 6にPHP7.3をインストールする方法
トラックバックURL
コメントする
greeting