web-dev-qa-db-ja.com

tail -fコマンドでページ分割する

私はページネーションでファイルを末尾にしようとしています:

tail -f foo.txt | more

これは、ファイルが200行挿入されるまで正常に機能します。これが発生すると、tailコマンドの性質がファイルの最後に移動し、その時点でログの追跡ができなくなります。

これを回避する方法はありますか?

5
Dolphin

私の解決策はこれです:

less some-file.log

次に、lessでヒット Shift+F。これにより、lessがファイルで更新されます。スクロールバックするには、単にヒット Ctrl+C

2
Scott Severance

代わりにtail -f log.txt | lessを使用してください。私の簡単なテストでは、新しい情報に進むために更新され、その後、上下に移動できます。つまり、元のコンテンツを静的に参照するのではなく、出力バッファーとしての更新が少なくなります。

または、可動部分が少ない(パイプなし)わずかなバリエーション-Dolphinがコメントで言及した解決策-less +F log.txtは良い方法です。 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.)

言い換えれば、これはこの場合に最適です。

私のお気に入りになるのを妨げる問題が1つあります。 less +F daemon.log | egrep sessionのような追加は機能しません。

私が日々のコマンドライン作業でパイプを使用し続ける理由の1つは、履歴と組み合わせると、データに応じて戻ってパイプを追加し、コマンドの動作を変更するのが非常に簡単だということです。単純なtail -f logが画面外にスクロールするデータ量のために機能しない場合、パイプを軽く叩きます。ボリュームが重すぎても、探している行のヒントが表示される場合は、grepまたはegrepにパイプを追加します。次に、awk、sed、またはcutをチェーンして、必要なものを正確に取得します。

これは、「猫の不必要な使用」がしばしばばかげた批判である理由でもあります。ファイルをcatしても予想外に長いことがわかった場合は、シェルの履歴を使用して上矢印キーを押し、他の操作を行います。クイックフィックス? cat foo | moreを追加するだけです。それはどのくらい長いですか?上矢印と| wc。 「パングロス」には何行ありますか? | egrep pangloss | wcを追加します。調査がどこに行くのかを正確に知ってコマンドを開始できればいいのですが、できなければ、履歴とパイプが物事を成し遂げるための良い方法です。い場合でも、cat file | more | egrep somethingは正常に機能します。

5
belacqua

そうではありませんが、その方法を使用します。両方ともデータを制限するプログラムを使用しようとしていますが、方法はまったく異なります。

試して

watch -n 5 tail  -n 40 /var/log/thingy

5秒ごとにテール表示が更新されます。

それは私が得ることができる限り近いが、それはあなたが望むものではありません。

問題は、すべてのデータが一度に期待されるということです。そこでは、テールがパイプを続けています。最後の数行を何度も読み直そうとすると、監視が機能します。ログを保持してスクロールバックできるようにする場合は、コンソールバックバッファを使用します。

Xでは、これはスクロールバーになります。実際のコンソールで使用する場合は、次のようなものを使用する必要があります。

kernel /vmlinuz root=/dev/sdb5 video=radeonfb fbcon=scrollback:128は、起動時にサイズを増やします。次に、上シフトおよび下シフトを使用してスクロールできます。

これはXではるかに簡単です。

tail -f /var/log/something.logおよび前後にスクロールします。 Enterキーを押すと、自分がいた場所を視覚的に確認できます。

VTYでは、同じことを達成するためにシフトアップとシフトダウンを使用する必要があり、さらにスクロールバックが必要な場合は、ブート時にfbcon=scrollback:128引数を使用します。

1
coteyr