tail -f 多次grep過濾輸出

對日誌記錄做多次grep過濾輸出,格式如下:
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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章