我有一个写入标准输出的过程,我希望能够在运行尾部-f时通过对各种字符串进行刷新来监视输出。做到这一点的一种方法是写入一个普通文件,然后尾随文件grepping一个字符串,然后尾巴grep为另一个。但是,我不想写入文件,因为这会填满磁盘,而且我不想处理旋转日志文件的麻烦。在bash中,如何找出当前正在写入的fifo,然后再次结束fifo,寻找不同的文本?
我以为我可以使用fifos来实现这一点。例如,
mkfifo myfifo
foo > myfifo &
tail -f myfifo | grep bar
tail -f myfifo | grep baz
不幸的是,这似乎并不奏效。实际上,当我第一次执行tail -f myfifo
然后foo > mfifo
时,我看到任何输出的唯一方法,但我不想重新启动foo(这是整个要点,否则我可以直接grep标准输出并重新启动进程grep为不同的字符串)。有谁知道为什么会发生这种情况,或者有关于如何实现这一点的建议?
是为[Linux的无阻塞FIFO的解决方案(按需日志记录)](http://stackoverflow.com/q/7360473/95735)你想要的东西? –