尾の改行の数を監視する方法


9

私はこのようなことをしたいです:

watch tail -f | wc -l
#=> 43
#=> 56
#=> 61
#=> 44
#=> ...

毎秒、尾の新しい行を数えます

/ Linux、CentO

より明確にするために。私はこのようなものを持っています:

tail -f /var/log/my_process/*.log | grep error

エラーメッセージをいくつか読んでいます。そして今、それらを数えたいと思います。1秒あたりのエラー数。したがって、ログの1行はプロセスの1つのエラーです。


あなたは何をしようとしているのですか?追加された行を監視したい場合は、tail -f /path/to/file単独で使用するだけで十分です。ファイルの行を監視したい場合は、を使用できますwatch wc -l /path/to/file
Khaled

@Khaled、追加された新しい行の数を監視する必要があります
fl00r

私は多数のファイルに対して正規表現でテールを使用しており、このファイルすべてに一度に何行追加されるかを確認したいと思います
fl00r

1
ふふふ。 tail -f /var/log/my_process/*.log |grep error > /tmp/error.lines & ; watch wc /tmp/error.lines?次に、数学を行います。
cjc 2012年

@cjcうまくいきました、ありがとう!:)あなたはそれをabの答えとしてすべきです
fl00r

回答:


24

私は最近pvを発見しました、そしてそれは本当にクールです、あなたは次のようなことをすることができます

tail -f logfile | pv -i2 -ltr > /dev/null

  • -i2 = 2秒ごとにカウント
  • -l =行を数える
  • -t =印刷時間
  • -r =表示率

3

ここでは、迅速かつダーティな方法です。基本的に、tailwatch wcを別々の部分に分割し、次のようなことを行います。

tail -f /var/log/my_process/*.log |grep error > /tmp/error.lines &
watch wc /tmp/error.lines

その時点で、エラー/秒の数値を取得するための計算を行うことができます。ただし、エラー率の1回限りの検査のためにこれを実行しているだけの場合は、ダーティで十分です。


3

pvが利用できない場合は、perlで実行できます。

1秒ごと:

tail -f  recycleBack*out  | perl -e 'while (<>) {$l++;if (time > $e) {$e=time;$i++;print "$i=> $l\n";$l=0}}'

10秒ごと

tail -f  recycleBack*out  | perl -e 'while (<>) {$l++;if (time > $e+10) {$e=time;$i++;print "$i=> $l\n";$l=0}}'

出力例:

1=> 1
2=> 1523
3=> 1339
4=> 1508
5=> 1785
6=> 1587
7=> 1770
8=> 1432
9=> 1339
10=> 1555
11=> 1663
12=> 1693
13=> 1647

-1

あなたはこのようなものを試すことができます:

tail -f /var/log/my_process/*.log | perl -pe '$_ = "$. $_"'

各行の前に行番号を出力します。


1)それはOPが探しているものではなく、2)nlこれを実行します。perlへの呼び出しを必要としません。
EEAA 2012年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.