将 tail -f 与 less +F 组合不起作用

将 tail -f 与 less +F 组合不起作用

我正在使用 ubuntu bash。我尝试像下面这样组合 tail -f 和 less +F,但什么也没出来。

tail -f long_running_log | less +F

long_running_log 是一个不断被另一个进程写入的日志文件。下面这行将在控制台上显示大量内容:tail -f long_running_log 但是,一旦我将其与 less +F 和管道结合起来,什么都没有出现。

如果你想知道我为什么要这样做,那是因为我想过滤掉 tail 的结果。真正的命令如下:tail -f long_running_log | filter1 | filter2 | less +F

为了调试目的,我删除了中间的 filter1 和 filter2,但仍然有问题。

答案1

较少的手册页:

   F      Scroll forward, and keep trying to read when the end of file is reached.  Normally  this  com-
          mand  would be used when already at the end of the file.  It is a way to monitor the tail of a
          file which is growing while it is being viewed.  (The behavior is similar  to  the  "tail  -f"
          command.)

问题是,只要管道仍在运行(即尾巴仍在运行)你不会得到 EOF。你可以用Ctrl-C这会终止管道 - 然后显示过滤后的输出。

您可以完全放弃管道'少+F'(您将在终端中逐步显示过滤后的输出)或将过滤后的输出重定向到另一个文件,然后您可以使用该文件进行监控'less +F that_log_file'

相关内容