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


59

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

私がしているtail -f tool.logログに目を維持するために、マシン上で実行されているが、真夜中に、ときtool.logに名前が変更されtool.log.<date>tail名前を変更したファイルを監視し続けています。

私が望んでいるのは、に似たツールですが、inodeをたどるのではなく、tailという名前のファイルを監視し続けますtool.log

このようなものはありますか?そうでない場合は、この目的のためにPythonで独自に作成できます。

回答:


90

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

-F
と同じ --follow=name --retry

-f--follow[ ={ 名前 | 記述子 }]
ファイルが大きくなるにつれて追加データを出力します。-f--follow--follow=descriptor等価です

--retry
ファイルがアクセス可能またはアクセス不能になった場合でも、ファイルを開こうとし続けます。名前でフォローする場合、つまり--follow=name

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

  • GNU -た-F上記のように
  • Mac OS X FreeBSD NetBSD--F同じ効果を持つ同様のオプションがあります
  • OpenBSDの --f十分です(ファイルが交換された場合(すなわち、inode番号の変更)、尾は、ファイルを再オープンしていきます)
  • Solaris-同等のものはありません
  • busyboxの --F最近のバージョンで使用可能ですが、してコンパイルする必要がありますENABLE_FEATURE_FANCY_TAIL(それはコンパイル時にいないデフォルトでは)

55

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

-Fオプションは意味--follow=name--retry選択肢、その尾は、それを削除して再作成されている場合でも、あなたのファイルを見ています。


5

あなたが代替を求めているので:

lessユーティリティは、のための代替可能性がありtail -F

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

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


ありがとう。テール-Fを知らなかったので、私は代替手段の後だけでした。常にオプションを知っておくと良い。
ヒュー

4

別の代替方法は、watchコマンドを使用することです。このコマンドでは、n秒ごと、この例では2秒ごとにコマンドが繰り返されます。

watch -n2 "tail tool.log"

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


1
これは、ログがリフレッシュタイマーよりも低速でスクロールすると多くの重複メッセージを作成し、高速でスクロールすると一部のメッセージを見落とすようです。
ボブソン

3
ウォッチは画面全体を引き継ぐので、メッセージを複製しませんが、スクロールバックする機能を削除します。
ヒュー

3

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

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


切り捨てられたり、名前が変更されたローテーションされたログを処理しないことがわかりました(特定のケースでどちらが動揺しているのか分かりません)。私はそれのためのいくつかの明らかなスイッチまたはテクニックを逃していますか?これはそれがその一歩を踏み出すべきもののように見えるのだろうか?
スチュアートヒッキンボトム

ファイルの切り捨て方法によって異なります。あなたが渡すと-r、それはファイル名をリロード(および任意の以前のログを回転させるロード)しますLNAVフラグを
ウェイン・ヴェルナー

1

私はmultitailあなたの特定のケースを処理するかどうかはわかりませんが、私はそれが間違いないでしょう。multitailは、やりたいことのほとんどすべてを実行tailします。

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


1
はい、そうです- multitail -f <name1> -f <name2> -f <name3> ...。この例では、いくつかのファイルを同時に追跡し、別々のウィンドウに表示します。
スチュアートヒッキンボトム
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.