使用 tail -f 命令进行分页

Dol*_*hin 6 command-line tail

我正在尝试使用分页尾文件:

tail -f foo.txt | more
Run Code Online (Sandbox Code Playgroud)

这工作正常,直到文件被注入,比如说,注入 200 行,当这种情况发生时,tail命令的性质是转到文件末尾,那时我失去了跟踪日志的踪迹。

有没有办法避免这种情况?

bel*_*qua 7

使用tail -f log.txt | less来代替。在我的快速测试中,它会更新以前进到新信息,然后您可以向上或向下。即,较少更新作为输出缓冲区,而不是静态引用原始内容。

或者,使用较少的移动部件(无管道)进行轻微变化——Dolphin 在评论中提到的解决方案——less +F log.txt是一个不错的方法。以下是手册页的内容F

   F      Scroll  forward, and keep trying to read when the end of file is reached.
          Normally this command 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.)
Run Code Online (Sandbox Code Playgroud)

换句话说,这非常适合这种情况。

它确实有一个问题阻止它成为我的最爱。添加 likeless +F daemon.log | egrep session不起作用。

我在自己的日常命令行工作中继续使用管道的一个原因是,当与历史结合使用时,返回、添加管道并根据数据指示更改命令的行为非常容易。如果tail -f log由于大量数据从屏幕上滚动而导致简单不起作用,请减少管道上的一巴掌。如果音量太大,但您看到了您正在寻找的行的提示,请向 grep 或 egrep 添加管道。然后链接 awk、sed 或 cut,以获得您想要的确切内容。

这也是为什么“不必要地使用猫”往往是一种荒谬的批评。如果您发现一个文件,但发现它出乎意料地长,请使用 shell 历史记录,点击向上箭头并对其进行其他操作。快速解决?只需添加cat foo | more. 多久了?向上箭头和| wc。“pangloss”有多少行?添加| egrep pangloss | wc. 如果您可以启动一个命令并确切知道您的调查将要去哪里,这很好,但如果您不能,历史和管道是完成工作的好方法。即使它很丑,也能cat file | more | egrep something正常工作。


Sco*_*nce 4

我的解决方案是这样的:

less some-file.log
Run Code Online (Sandbox Code Playgroud)

然后,less我点击了Shift+ F。这会导致less文件更新。要向后滚动,只需按Ctrl+ C