还有许多其他类似的线程,但通常的结论类似于"Install File::Tail“。但是,我在一个旧机器上,我们正在释放它,我只想写一个一行程序来监控日志。我尝试安装File::Tail,但是CPAN的环境就是不工作,我不想花时间找出问题所在。
我只想要一个基本的脚本,解析出一个IP地址,并为我保留它的计数。然而,由于某些原因,即使是这个简单的测试也不起作用:
$ tail -f snmplistener.log|grep IPaddress |perl -ne 'print "LINE: $_\n";'我认为这与输出缓冲有关,但我一直对它的工作原理有点模糊。我怎样才能让这一行程序工作呢?
发布于 2011-11-10 03:23:50
tail -f通常不缓冲输出,但grep可能会缓冲输出。将"grep“功能移到Perl一行程序中:
tail -f snmplistener.log | perl -ne 'print "LINE: $_\n" if /IPaddress/'发布于 2011-12-20 19:17:25
man grep
--line-buffered
Use line buffering on output. This can cause a performance penalty.所以:
tail -f /log/file.txt | grep --line-buffered SomePattern | perl ...发布于 2011-11-10 03:32:24
或者根本不使用tail:
perl -e 'open($h,$ARGV[0]); while (1) { /IPaddress/ and print "LINE: $_" for <$h>; sleep 1 }' snmplistener.loghttps://stackoverflow.com/questions/8070280
复制相似问题