Linux 中的管道和尾部 -f

Jos*_*phD 2 pipe tail

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

我只是想知道为什么这不起作用,如果tail -f必须始终先是,然后是另一个管道?

Jed*_*els 5

就做tail -f logfile。当您首先执行 cat 时,您正在对文件进行分类,如果您想获得新条目,则需要再次对其进行分类。如果你只是这样做tail -f logfile,那么它会随着文件的更新不断更新屏幕(尽管你可能希望这样做tail -F logfile,所以如果日志文件被翻转并创建一个新的,它将继续工作)。

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