我有一个不断更新的日志文件A(但它被滚动了),我需要不断地过滤它的内容并写入一个持久的文件。
TL;博士我需要:
tail -f A.log | grep "keyword" >> B.log但此命令不向B.log写入任何内容。
研究只给了我一些复杂的东西--这不是我的情况。我猜我错过了一些简单的概念。
这与标记为possible duplicate的问题不同,因为grep工作,如果我不尝试将它写到文件中,那么它的输出就有了。问题是文件。
发布于 2016-08-11 12:02:37
如果只是grep,而没有写入该文件,则会遇到缓冲“问题”。I/O缓冲,除非由程序手动实现,否则将由libc处理。如果程序的stdout是固定的,则缓冲将以行为基础。否则,libc缓冲区将输出,直到缓冲区达到大小限制为止。
在Linux上,这意味着对于glibc,您可以使用stdbuf命令配置缓冲区:
tail -f A.log | stdbuf -oL grep "keyword" >> B.log-oL指定输出流应该是行缓冲的.
https://stackoverflow.com/questions/38895451
复制相似问题