Linux 中的管道和 tail -f

Linux 中的管道和 tail -f

是否可以执行cat logfile | tail -f?出于某种原因,它只读取初始日志,但不会更新传入的条目。我知道我可以直接执行tail -f logfile

我只是想知道为什么这不起作用,以及是否tail -f必须始终先使用管道然后再使用另一根管道?

答案1

只需执行tail -f logfile。当您首先执行 cat 时,您正在对文件进行 cat 处理,如果您想获取新条目,则需要再次执行 cat 处理。如果您只是执行tail -f logfile,那么它将在文件更新时不断更新屏幕(尽管您可能希望执行tail -F logfile,因此如果日志文件被滚动并创建新文件,它将继续工作)。

换句话说,cat执行一次,输出将发送到 tail。直接在文件上运行 tail 会导致 tail 执行并保持运行,因此您可以不断获得更新(即使用 -f)。

相关内容