ファイル全体を見て、ファイルにデータが追加されるのを待つにはどうすればよいですか?

ファイル全体を見て、ファイルにデータが追加されるのを待つにはどうすればよいですか?

tail -f ファイル全体を表示するのと同じように、ファイル全体を読み、入力を待つようにしたいと思います。

このファイルはファイルなので、長さは常に変更されます.log

ファイルの長さがわからない場合はどうすればよいですか?

答え1

これを達成するより良い方法があります。

less +F <file>

フル機能のフルファイルが表示され、less新しい入力を待ちます。入力待機を停止して特定のセクションを読み取るには、停止^Cと継続を使用できますF

このFコマンドは常に使用できますless。でファイルを開くと、変更を観察するためにクリックしてless開きFます。ありがとうヒルゲルトディステフそしてワイルドカードこれを指摘してください。

答え2

tail最後に表示する行数を指定するために追加することができ-nます-f。引数-nがで始まると、+最初から行数を示します(0そして@Benが提案したように最初の行をスキップしたことを示す1ファイル全体を表示します)。2だからこうしてください:

tail -f -n +0 filename

ログファイルが回転している場合は、追加(または--retry@Hagenの提案に従って-f and --retryマージ-F)できます。

また、グラフィックターミナルでは、マウスとPageUp/ PageDown(バッファが十分に大きいと仮定)を使用して履歴にスクロールすることができ、この情報はCtrl+で終了してCもそのまま残りますtail。これを使用するとそれほど便利ではなく、less私が知っている限りスクロールするにはキーボードを使用する必要があります。less-X

答え3

watchコマンドはこれを行う必要があります。

また試すことができます

less +FG 

lessファイルが大きなファイルであると言ったので、ファイルをスクロールするコマンドにはより多くのオプションがあります。

答え4

/u/Anthonの回答に加えて、次のこともできます。

{ cat filename; tail -0f filename; }

tailオプションは-0と同じです-n 0。つまり、0行を表示します。ただし、-f新しい行が表示されます。

校正器は必要ありません{ }。時々、何らかの方法でファイル記述子をリダイレクトしたいので、これを使用します。たとえば、

{ cat ; tail -0f -; } < /var/log/messages

catBen Milwoodは次のように指摘しています。ジョブの終了とジョブの開始の間にファイルが大きくなる競合状態が発生する可能性がありますtail。しかし、これは学問的解決が必要な「学術的」問題でもある。

関連情報