tail -f log | grep xxx | grep yyy
發現grep失效,無法做正確輸出。google研究了一下,原因如下:
管道 | 是全緩衝的,一般來說buffer_size爲4096,有些是8192。不管具體值多少,只有buffer_size滿了,纔會看到輸出。
在操作裏 >>file 這個操作也是全緩衝的。調整如下
tail -f log | grep --line-buffer xxx | grep --line-buffer yyy
結果輸出正常。
grep當帶上了 --line-buffer 的時候,每輸出一行,就刷新一次。
在unix裏,塊設備和普通文件,以及管道都是全緩衝的。
對日誌分析告警和實時監控可以考慮如下形式:
tail -f $LOGF | while read var
do
case "$var" in
...
...
esac
done
http://www.quwenqing.com/read-134.html