2011-06-13 70 views
5

因此,我記錄了一些調試信息,並將它發送到stdout,然後我將其grep爲一個字符串。在某個時刻,日誌記錄完成,應用程序正在等待內容,但grep的輸出在中間被截斷。所以它匹配一條線,但沒有輸出所有線。發送到stdout,grepped的系統日誌的輸出在中間被截斷

有沒有辦法強制grep刷新?

謝謝。

更新: 看來,線路緩衝將有所幫助。

回答

3

我認爲你通過使用-line-buffered標誌解決了grep問題。還要確保你的應用程序在每行之後刷新標準輸出。如果你的stdout是一個終端,行緩衝是默認的,但是當你將它傳輸到另一個程序時,默認是使用完全緩衝。

如果您將數據管道輸入到沒有-line-buffered標誌的程序中(例如uniq),請查看stdbuf程序(http://www.pixelbeat.org/programming /stdio_buffering/stdbuf-man.html),它允許你修改任何程序的緩衝選項。

請參閱http://www.pixelbeat.org/programming/stdio_buffering/,以便對該問題和一些常見解決方案有一個很好的概述。

+0

良好的鏈接資源。 – artfulrobot 2012-01-30 10:22:18

相關問題