我想要做这样的事情:
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
这是一个快速和肮脏的方法。 你基本上想把tail和watch 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 '$_ = "$. $_"'
它在每行的前面打印行号。