显示一个“滚动”的日志文件

通过命令行,我有一个日志文件想要跟踪。
我想要的是基本上一个可以在日志更新时刷新的“tail”,使得文本随着新行被添加到日志文件中而向上滚动。
有没有什么工具可以做到这一点,而不需要编写代码?
5个回答

tail有一个-f选项:

来自man页面:

-f, --follow[={name|descriptor}] 输出随着文件增长而追加的数据;-f,--follow和--follow=descriptor是等效的

因此,如果您键入:

tail -f [path_and_name_of_logfile] - 您将在终端中看到输出,因为日志文件本身被追加。

N.B. [path_and_name_of_logfile]是参数,所以举个例子:

tail -f /var/log/messages

如果您与-n [number_of_lines]选项结合使用,您可以从文件中的最后[number_of_lines]开始输出 - 例如

tail -n 10 -f /var/log/Xorg.0.log

enter image description here


一些程序会定期更改它们的日志文件,将旧文件更名为新文件(例如log.0),然后重新开始记录。
注意:logrotate会对那些没有自动更改日志文件的其他程序执行此操作。
使用"tail -f"命令可以在文件更名后继续跟踪旧文件。
使用"tail -F"命令可以根据文件名进行跟踪,因此会切换到跟踪新文件。

两个答案都很准确...没意识到Tail有这个选项。你得到了额外信息的勾号。 - WernerCD
顺便提一下,还有一些很棒的脚本可以给你的日志着色。一个我想到的例子是colorize.pl,你可以通过将其管道传输来实现这一点。例如:tail -f /var/log/messages | /home/me/colorize.pl - lazyPower
@lazyPower 也不错。我得稍微调整一下,虽然我觉得在我目前的情况下可能用处不大。 - WernerCD

虽然使用`tail`是通常的方法,但值得注意的是`less`也具有相同的功能,并且有时更加有用。
如果你使用`less`打开一个文件,你可以按下`Shift` + `F`来让它跟随文件(即它会显示新的行,就像`tail -f`一样)。你可以使用`Ctrl` + `C`退出这个模式。
你也可以使用`+F`选项启动`less`,这样它将在该模式下启动。一般来说,`+`可以用来给`less`发送“键盘命令”,它会在启动时执行。
使用`less`的好处是,你可以轻松搜索文件或查看其他区域,以防需要。例如,我经常在日志文件中这样做。

从来没听说过“follow”(更多、更少、尾巴、猫)。好知道这些东西。 - WernerCD
2同意。我更喜欢简洁一些。当你看到有趣的内容时,按下Ctrl-C将停止滚动,然后按b向后滚动或按f向前滚动,使用/或?来向前或向后搜索。按g将带您到文件的开头,按G将带您到结尾。一切您所需的功能。 - Martin Dow

Does

tail -f something.log

你想做什么?


tail有两种实现方式,用于跟踪和输出追加到文件中的数据

  • 跟踪文件描述符
  • 跟踪具有特定名称的文件

使用参数-f--follow--follow=descriptortail会跟踪文件描述符。这种方法允许在重命名时继续跟踪文件,但当文件被轮换(创建一个具有不同文件描述符的新文件)时,跟踪会停止。

当跟踪被轮换的文件时,可以使用--follow=name-F参数,它等同于--follow=name --retry。这样,tail会定期重新打开文件以应对可能的轮换。


我认为ccze是适合你的工具。
它可以实现着色的功能。你可以看到日志向下滚动,但由于行被以不同颜色打印出来(错误以红色显示等),所以更容易阅读。你可以尝试以下类似的内容:
tail -f /var/log/syslog | ccze