我正在使用 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'。