如何看尾巴新线的数量

我想要做这样的事情:

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

它每秒都会计算新的尾线

/ Linux,CentOs

要更清楚。 我有这样的东西:

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

我正在阅读一些错误消息。 现在我想数一数。 我有一秒钟有多less错误? 所以日志中的一行是一个进程中的一个错误。

我最近发现了PV,这真的很酷,你可以做类似的事情

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

  • -i2 =每2秒计数一次
  • -l =计数行
  • -t =打印时间
  • -r =显示速率

这是一个快速和肮脏的方法。 你基本上想把tailwatch wc分解成不同的部分,做一些事情:

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

在这一点上,你可以做math得到一个错误/秒的数字。 但是,如果你只是为了一次性检查你的错误率,那么快速和肮脏的可能就足够了。

如果pv不可用,可以用perl完成:

每一秒钟:

 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 

你可以尝试这样的事情:

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

它在每行的前面打印行号。