在 Linux 中实时查看日志的 3 种方法
您知道如何在 Linux 中查看文件。您可以使用 cat 命令或 less 命令来实现此目的。
这对于具有静态内容的文件来说很好。但日志文件是动态的,其内容会随时间而变化。要监视日志,您需要观察日志文件的内容变化。
如何实时查看日志文件的内容?Tail 是用于此目的的最常用命令,但也有一些其他工具。我将在本教程中向您展示它们。
方法一:使用tail命令查看日志文件
tail命令在现实生活中非常流行,用于查看日志文件,因此系统管理员使用术语“tail 日志文件”。
tail 命令主要用于从末尾显示文件的行,因此有术语“tail”。
您可以使用-f
选项来跟踪文件的尾部,这意味着它将继续连续显示添加到文件的新行。
tail -f location_of_log_file
要停止日志文件的拖尾,请使用 Ctrl+C终端快捷键。
Tail 和 grep
好吧!所以 tail 命令通过显示实际的文件更改解决了一个问题。但是当实时发生如此多的快速更改时,连续查看日志文件并不是很有帮助。
监控日志文件时,您经常会寻找某个特定术语。在大量新行中找到它几乎是不可能的。
为了使事情变得简单,将 tail 和 grep 命令组合起来,如下所示:
tail -f log_file | grep search_term
这很好,对吧?让我们让它变得更好一点。
我经常发现,仅显示搜索词的行并不能显示必要的详细信息。这就是为什么我使用 grep 命令并加上选项 来显示搜索词前后几行-C
。
tail -f log_file | grep -C 3 search_term
现在,您将看到与搜索词匹配的行以及前后 3 行。这将让您更好地了解正在发生的事情。
想让它变得更好吗?您可以对多个搜索词进行 grep,甚至可以进行不区分大小写的搜索:
tail -f log_file | grep -C 3 -i - E 'search_term_1|search_term_2'
使用日志轮换跟踪文件
如果您在企业服务器上工作,日志可能会轮换。这意味着当前日志文件达到一定大小后,会重命名并压缩。
如果您实时跟踪日志文件,则会出现问题。默认情况下,tail 命令在文件描述符上工作。如果当前日志文件被轮换,tail 命令现在将指向存档日志文件,该文件现在不会记录任何更改。
解决方案是按照日志文件的名称进行跟踪。这样,即使发生日志轮换,尾部也会指向当前日志文件(因为其名称永远不会改变)。
tail --follow=name log_file | grep -C 3 -i - E 'search_term_1|search_term_2'
现在好多了。下次您跟踪日志文件时,使用此方法可以更有效地监视它。
Tail 非常适合实时监控日志文件,但如果您必须同时分析多个日志文件怎么办?答案在下一节中。
使用 tail 查看多个日志文件
这应该适用于 Linux 系统。您可以使用 tail 命令同时监视多个日志文件。只需以这种方式提供文件的路径:
tail -f log_file_1 -f log_file_2
您会看到它开始显示实时变化以及它之前的文件名,以便您可以区分不同的日志源。
有一种稍微好一点的方法,可以使用名为 multitail 的实用程序同时查看多个日志文件。
方法 2:使用 multitail 同时监控多个日志文件
Multitail,顾名思义,用于一次显示多个文件。
这有什么大不了的? tail 命令也可以做同样的事情,对吧?
但是 Multitail 比传统的 tail 命令有一些优势。它以分割视图显示文件,甚至可以在不同的行和列中显示不同的文件。
请记住,tail 会在同一视图中显示所有内容,因此很难理解。Multitail 通过提供类似screen 命令的分割视图克服了这一困难。
您可以向其提供多个文件,但我认为一次提供超过 3 个文件会比较困难。
multitail log_file_1 log_file_2
默认情况下,multitail 的工作方式与 相同tail -f
。它显示最后 100 行,然后进入实时视图。默认情况下,它会按行拆分视图。
您可以按 b 打开选择器窗口并选择您想要的日志文件来查看它并滚动浏览以进行进一步更深入的分析。
按 q 退出multitail 中的所有视图。
您可以像这样按列拆分视图:
multitail -s 2 log_file_1 log_file_2
-s
列数和列之间必须有空格。
Multitail 还可以做一些其他的事情,但我不会在本教程中讨论这些细节。
到目前为止,您已经了解了两种监视日志文件的方法。还有另一种不太常见的查看文件更改的方法,即使用 less 命令
方法三:用less命令实时查看日志文件变化
less 命令更适合于读取文本文件而不会使屏幕混乱。它还可用于读取具有实时更改的文件。
该选项+F
允许 less 跟踪对文本文件所做的更改。
less +F log_file
它打开日志文件并实时显示写入的更改。
按 Ctrl+c 中断,按 q 退出视图。
与 tail 命令不同,此方法可让您快速查看日志更改,而不会使屏幕混乱。
结论
这种在 Linux 中监控日志文件的方法适用于传统的基于文本的日志文件。对于系统日志,syslog仍然存在,但许多 Linux 发行版已切换到日志日志,要查看和分析日志日志,您必须使用 journalctl 命令。
除此之外,还有其他复杂的工具,例如Graylog,可以使用仪表板和图表进行更深层次的日志分析。有关这方面的更多信息,请参阅其他文章。
我希望您能从这个看似简单的 Linux 实时日志监控主题中学到一些新知识。欢迎您提供反馈。