![如何避免输出流管道延迟](https://linux22.com/image/1098395/%E5%A6%82%E4%BD%95%E9%81%BF%E5%85%8D%E8%BE%93%E5%87%BA%E6%B5%81%E7%AE%A1%E9%81%93%E5%BB%B6%E8%BF%9F.png)
当我吹管的时候网猪输出延迟太长(大约 5-200 秒,而不是 1 秒,取决于管道、cmd 等)。Nethogs 每秒打印一次输出。
为了简单起见,请考虑以下命令(大约需要 5 秒)
sudo nethogs ppp0 | grep e | grep e |grep c
我相信这是由于管道缓冲造成的。
我怎样才能避免延迟(在一般的或网猪案)???
答案1
终于找到了。只需使用 perl 即可完成。
perl -le 'open(P," top |"); $|=1; while(<P>){ print }'
采取例子的
top | grep i | grep id
perl -le 'open(P," top |"); $|=1; while(<P>){ print "------","$_"; }' | grep i | grep id
为了nethogs
perl -le 'open(P,"sudo nethogs ppp0 |"); $|=1; while(<P>){ print "------","$_"; }' | grep e | grep e |grep c