webdevqa.jp.net

ファイル名に続く "tail -f"の代替

時限回転ファイルロガーを使用していくつかのログが生成されています。これはtool.logというファイルにログを記録し、真夜中にこれをtool.log.<date>に移動して新しいtool.logを開始します。

マシンでtail -f tool.logを実行してログを監視していますが、真夜中にtool.logtool.log.<date>に名前が変更された場合、tailは名前が変更されたのを引き続き監視しますファイル。

私が期待しているのは、tailに似たツールですが、iノードを追跡するのではなく、tool.logという名前のファイルを引き続き監視します。

このようなものは存在しますか?そうでない場合は、この目的のためにPythonで独自に書くことができます。

60
Hugh

tailの一部の実装には、このオプションがあります。 GNU tailのmanページからの説明です:

_-F_
_--follow=name --retry_と同じ

_-f__--follow_[_=_ {name|descriptor}]
ファイルが大きくなるにつれて追加データを出力します。 _-f_、_--follow_、および_--follow=descriptor_は同等です

_--retry_
ファイルがアクセス可能になったとき、またはアクセスできなくなったときでも、ファイルを開こうと試み続ける名前でフォローする場合、つまり_--follow=name_を使用する場合に便利です

このオプションはPOSIXで指定されていないため、どこにでも依存することはできません。いくつかの既知の実装:

  • [〜#〜] gnu [〜#〜] -上記のように_-F_があります
  • Mac OS XFreeBSD および NetBSD -同じ効果を持つ同様の_-F_オプションがあります
  • OpenBSD -_-f_で十分です(ファイルが置き換えられた場合(つまり、iノード番号が変更された場合)、tailファイルを再度開いて続行します)
  • Solaris -同等のものなし
  • Busybox -_-F_は最近のバージョンで使用できますが、_ENABLE_FEATURE_FANCY_TAIL_でコンパイルする必要があります(デフォルトではコンパイルされません)
90
Toby Speight

代替はtail -Fコマンドです。

-Fオプションは--follow=name--retryオプションを意味するため、ファイルが削除されて再度作成された場合でも、tailはファイルを監視しています。

55
Oleg Bolden

代替を要求したので:

lessユーティリティはtail -Fの代わりになる可能性があります。

次のように実行する必要があります:less --follow-name filename.logを押して ShiftF

これにより、tail -Fと同じ結果が得られます。

5
VL-80

もう1つの方法は、watchコマンドを使用することです。このコマンドでは、n秒ごと、この例では2秒ごとにコマンドを繰り返します。

watch -n2 "tail tool.log"

使用する Ctrl+C ログの表示が終了したら、コマンドを終了します。

4
Arronical

lnav は、ファイル名に続くもう1つの素晴らしいツールです。

また、ディレクトリをポイントすることもでき、他のあらゆる種類の機能に加えて、そのディレクトリ内のすべてのファイルをテールします。

3
Wayne Werner

multitailがあなたの特定のケースを処理できるかどうかはわかりませんが、きっと対応できます。 multitailは、あなたがtailにできることのほとんどすべてを行います。

https://en.wikipedia.org/wiki/MultiTail

1
Andy Lester