新しい出力があるかどうかログファイルを監視しようとしています。私の制御下にない別のスクリプトは、ファイルを削除してから同じ名前の新しいファイルを生成することです。tail -f
ファイルが削除されているため、使用できません。
答え1
サポートされている場合はtail
ご利用くださいtail -F
、消えて再現されるファイルを非常にうまく処理します。tail
所定の場所に保持されるディレクトリから始めたことを確認してください。
-F
例略称--follow=name --retry
:tail
ファイル記述子の代わりにファイルを名前で追跡し、ファイルにアクセスできない場合は再試行します(例えば削除されたからです。)
--follow=name
(多くのwith関連のバグがcoreutils 8.26で修正されているため、--retry
以前のバージョンでは問題が発生する可能性があります。例えばtailファイルを含むディレクトリが削除されたときの再試行は、バージョン8.26以降のすべての場合にのみ機能するようです。 )
答え2
Tail Manコマンドを見てください。そのうちのいくつかは次のとおりです。
--follow=name
tail
デフォルトの記述子の代わりに時計名を表します。このようなオプションを使用すると、そのファイルを削除して再生成するとtail
表示されます。マニュアルに記載されているように:
--follow(-f) を使用すると、tail はデフォルトで次のファイル記述子を使用します。つまり、tail が指定されたファイルの名前が変更されても、tail は継続して終了します。このデフォルトの動作は、ファイル記述子(ログの回転など)ではなく、ファイルの実際の名前を実際に追跡したい場合には望ましくありません。この場合は --follow=name を使用してください。これにより、tailは名前の変更、削除、および作成に対応するように名前付きファイルを追跡します。