通过命令行,我有一个想要跟踪的日志文件。
我想要的基本上是tail
在日志更新时刷新,使得文本在新行附加到日志文件时向上滚动。
有没有什么方法可以实现这个目的而不需要编写任何代码?
答案1
tail
有以下-f
选项:
从man
页面:
-f, --follow[={name|descriptor}] 随着文件增长输出附加数据;-f、--follow 和 --follow=descriptor 是等效的
因此如果你输入:
tail -f [path_and_name_of_logfile]
- 您将在终端中看到日志文件本身附加的输出。
NB[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
一些程序会定期更改其日志文件,将旧文件移为新名称(例如 log.0)并重新开始。
注意:logrotate 会为其他不执行此操作的程序记录文件。
tail -f
重命名后将继续跟随旧文件。
tail -F
将按名称跟踪文件,因此将切换到跟踪新文件。
答案2
虽然tail
这确实是实现这一目的的常用方法,但应该注意,它less
具有相同的功能,并且有时更有用。
如果你使用 打开了一个文件,less
那么你可以按Shift+F让它跟随文件(即它将显示新行,就像那样)。你可以使用+tail -f
退出此模式CtrlC
您也可以less
从+F
选项开始,在这种情况下它将开始在该模式下。一般来说,+
可用于提供less
启动时要执行的“键盘命令”。
使用less
这种方法的好处是,如果需要,您可以轻松搜索文件或查看其他区域。例如,我经常对日志文件这样做。
答案3
做
tail -f something.log
做你想做的事?
答案4
我认为ccze是适合您的工具。
它的作用与着色相同。您可以看到日志向下滚动,但这样更容易阅读,因为行是用颜色打印的(错误用红色表示,等等)。您可以使用以下方法快速尝试:
tail -f /var/log/syslog | ccze