我有一个正在写入标准输出的进程,我希望能够在运行 tail -f 时通过 grepping 各种字符串来监视输出。做到这一点的一种方法是写入一个普通文件,然后将文件 grepping 用于一个字符串,然后将其 grepping 用于另一个字符串。但是,我不想写入文件,因为这会填满磁盘,而且我不想处理轮换日志文件的麻烦。
我以为我可以使用 fifos 来实现这一点。例如,
mkfifo myfifo
foo > myfifo &
tail -f myfifo | grep bar
tail -f myfifo | grep baz
不幸的是,这似乎不起作用。事实上,拖尾时我看到任何输出的唯一方法是当我第一次执行tail -f myfifo
thenfoo > mfifo
时,但我不想重新启动 foo (这就是重点,否则我可以直接 grep standard out 并重新启动进程以 grep for不同的字符串)。有谁知道为什么会发生这种情况或对如何实现这一点有建议?