【发布时间】:2014-02-21 14:20:05
【问题描述】:
我在看《高级bash脚本》,第31章,有问题。我想不明白。
tail -f /var/log/msg | grep 'error' >> logfile
为什么没有任何内容可以输出到日志文件中?
你能给我一个解释吗?
提前谢谢你
【问题讨论】:
-
因为 /var/log/msg 的尾部没有包含字符串 'error' 的行?
tail -f显示现在正在写入文件的内容,grep仅过滤掉匹配的行,因此如果没有匹配的行,则不会输出任何内容。 -
@MarkReed,是的,文件'msg'中有几行
-
@ruanhao:最后 10 行必须有
error文本,否则tail -f只是等待新日志出现。 -
直到 足够 个匹配行被
grep累积,它使用缓冲,不会将任何内容写入日志文件。 -
使用
tail -f msg | grep --line-buffered 'error' >> logfile是可以的,但我还是想知道为什么'grep'直接输出到stdout时似乎没有缓冲?
标签: linux bash shell pipe io-redirection