发送到stdout,grepped的syslog输出正在截断中线

时间:2011-06-13 13:38:21

标签: grep syslog

所以我正在记录一些调试信息,将它发送到stdout,然后我把它变成一个字符串。在某个时刻,日志记录完成,应用程序正在等待东西,但grep的输出被截断为中线。所以它匹配一条线,但没有输出所有那条线。

有没有办法强制grep冲洗?

感谢。

更新: 似乎--line-buffered会有所帮助。

1 个答案:

答案 0 :(得分: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/,了解该问题以及一些常见解决方案。