テキストファイルを開き、それ自体を更新させます


20

テキストファイルを開いて、それ自体を更新するにはどうすればよいですか?方法に似ていますtop

ログファイルを開き、その場で更新されるのを確認します。

私はちょうど試しました:

$ tail error.log

ただし、ログファイルの行を表示するだけであることに気付きました。

RHEL 5.10を使用しています


4
使用tail -f error.log
garethTheRed 14

ああ、それtailを使用する正しい方法はありますか?うわー、私は本当にそれを使用できるとは思わなかった。もっと長い表現を期待していました。
Kevdog777

1
参考までに、tail 仕事のツールですが、文字通りopen a text file and let it update itselfで達成できますwatch cat filename
クトゥルフ14

1
@Cthulhuは、あなたが意味する、watch cat filenameまたは類似しています。watch filename実行しようとしfilenameます。
テルドン

@terdonはい、確かに。
クトゥルフ14

回答:


29

あなたが探していますtail -f error.log(からman tail):

   -f, --follow[={name|descriptor}]
          output appended data as the file grows; -f, --follow, and --fol‐
          low=descriptor are equivalent

これにより、ファイルを監視し、ファイルに加えられた変更を確認できます。


そして、これは多くのリソースを使い果たしませんか?
Kevdog777

1
@ Kevdog777は本当にありません。おそらく、ファイルを更新するために数秒ごとにファイルを再度開くだけです。これは、あなたが望むことをする古典的な方法です。
テルドン

1
@terdon、でのみ再オープン(再オープン可能)し-Fます。それで-f、毎秒読み込みます。のようなものwhile cat; do sleep 1; done < fileです。inotailより反応的なテールについては、Linuxを参照してください(inotifyファイルがいつ変更されるかを知るために使用します)。
ステファンシャゼル14

@StéphaneChazelas:それよりもずっと効率的だと思います。selectまたはpollを使用してfdが読み取り可能かどうかを確認し、fdで利用可能なデータがあるまでスリープします。私は完全に間違っている可能性がありますが。
マーティンヨーク14

1
@LokiAstari、あなたはreadシステムが毎秒呼び出すよりもはるかに効率的になることはできません。通常のファイルではブロックしないため、「読み取り」selectまたはpoll通常のファイルでは常にtrueが返さread()れます。したがって、動作しません。そうは言っても、GNUはtail現在inotifyLinuxで使用しているためinotail、もはや必要ありません。
ステファンシャゼル14

20

スクロールバックと検索に「テール」の代わりに「少ない」を使用する

tail -f error.logまたは、より良い方法を使用できますtail -F error.log

ただし、ファイル内をスクロールバックする場合、それはあまり役に立ちません。

less +F error.log

関数を取得しますがtail -f、+ を使用して新しい入力の読み取りを中断
でき ます。CtrlC

次に、通常lessモードに
戻ります。このモードでは、スクロールして戻っUp/で見落としたことがあるものを確認Down
できます。また、Left/Right

検索し、一致する行のみを表示する

また、で正規表現を検索し/?後方、nおよびN次/前を検索することもできます。

ログファイルの非常に興味深いのは、あなたができることです隠すと検索のためのすべての非マッチングラインを&フィルタリングのみマッチを行います。

コマンドラインのキー

F内部で、-likeモードless継続tail -fます。コマンドラインでの手段「に直接少ない開始後の記者は、これらのキー」。
+less +F

そのためF、起動時にキープレスを使用しました。

F  Scroll  forward,  and  keep trying to read when the end of file is
   reached.  Normally this command would be used when already at  the
   end  of the file.  It is a way to monitor the tail of a file which
   is growing while it is being viewed.  (The behavior is similar  to
   the "tail -f" command.)

multitail複数のログファイルを監視する必要がある場合も参照してください。


感謝しますが、tail -f error.log私が必要なものに最適です。ログファイルは1時間ごとに更新されるだけなので、私の使用には十分です:-)
Kevdog777 14

1
次回も忘れずに忘れないでください;)
Volker Siegel 14

mostにもtail -fモードがありますF
ステファンシャゼル14

@StéphaneChazelas右、ありがとう!うーん... most少し前に言及してくれた人に感謝したことを覚えています...そしてそれを忘れました。
フォルカーシーゲル14

@StéphaneChazelasしかし、それでは、一致する行のみを表示するmostフィルター機能&が少ないようではありませんか?通常、ログファイルの便利な機能。
フォルカーシーゲル14

5

次の-fオプションを使用しますtail

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

またはF内部でコマンドを使用しますless

   F      Scroll forward, and keep trying to read when the end of file is reached.  Normally this command would be used when already at the end of the file.  It is a way to mon‐
          itor the tail of a file which is growing while it is being viewed.  (The behavior is similar to the "tail -f" command.)

この回答の新機能は何ですか?
bluefoggy 14

1
あなたが何を求めているのか分かりません。それはこの質問への2番目の答えであり、言及した最初のものlessでした。
はArkadiusz Drabczyk
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.