在 Linux 中实时查看日志的 3 种方法

你知道如何在 Linux 中查看文件。 为此,您使用 cat 命令或可能更少的命令。

这对于具有静态内容的文件很有用。 但是日志文件是动态的,它们的内容会随着时间而变化。 要监控日志,您需要观察日志文件内容的变化。

如何实时查看日志文件的内容? Tail 是用于此目的的最流行的命令,但也有一些其他工具。 我将在本教程中向您展示它们。

方法一:使用tail命令查看日志文件

tail 命令在现实生活中查看日志文件非常流行,以至于系统管理员使用术语“tail the log file”。

tail 命令本质上用于从末尾显示文件的行,因此称为“tail”。

您可以使用 -f 跟随文件尾部的选项,这意味着它将不断显示添加到文件中的新行。

tail -f location_of_log_file

停止日志文件的拖尾,使用 Ctrl+C 终端快捷方式。

尾巴和 grep

好的! 所以 tail 命令通过显示现实生活中的文件更改来解决问题。 但是当实时发生如此多的快速变化时,连续查看日志文件并不是很有帮助。

在监视日志文件时,您通常会寻找特定的术语。 发现在涌入的新线路中是 close 到不可能。

为了使事情更容易,像这样组合 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

您会看到它开始显示实时更改以及它之前的文件名,以便您可以区分不同的日志源。

使用tail实时查看多个日志文件

使用名为 multitail 的实用程序一次查看多个日志文件有一种更好的方法。

方法2:使用multitail一次监控多个日志文件

多尾,顾名思义,用于一次显示多个文件。

有什么大不了的? tail 命令也可以做同样的事情,对吧?

但是Multitail 比传统的tail 命令有一些优势。 它以拆分视图显示文件,您甚至可以在不同的行和列中显示不同的文件。

请记住,tail 在同一个视图中显示所有内容,这变得难以理解。 Multitail 通过提供像 screen 命令一样的拆分视图来克服这个困难。

Multitail 不像 tail 那样是必不可少的命令,您可能必须在使用它之前安装它。

您可以向它提供多个文件,但我认为一次很难跟踪 3 个以上的文件。

multitail log_file_1 log_file_2

默认情况下,multitail 的工作方式与 tail -f. 它显示最后 100 行,然后进入实时视图。 默认情况下,它将视图拆分为行。

使用 multitail 查看多个日志文件

您可以按 b 打开选择器窗口并选择您选择的日志文件以查看它并滚动浏览它以进行更深入的分析。

按 q 退出 从多尾的各种观点。

您可以像这样将视图拆分为列:

multitail -s 2 log_file_1 log_file_2

之间有一个强制空格 -s 和列数。

带多尾的垂直拆分视图带多尾的垂直拆分视图

Multitail 能够做一些其他的事情,但我不会在本教程中详细介绍这些细节。

到目前为止,您已经看到了两种监控日志文件的方法。 在现实生活中还有另一种不太传统的查看文件更改的方法,那就是使用 less 命令

方法三:使用less命令实时查看日志文件变化

less 命令更适合阅读文本文件而不会使屏幕混乱。 它还可以用于读取具有实时更改的文件。

选项 +F 允许 less 跟踪对文本文件所做的更改。

less +F log_file

它打开日志文件,并实时显示写入其中的更改。

使用less命令实时查看日志文件使用less命令实时查看日志文件

按 Ctrl+c 中断,按 q 退出视图。

与 tail 命令不同,此方法允许您快速查看日志更改而不会弄乱屏幕。

结论

这种在 Linux 中监视日志文件的方法适用于传统的基于文本的日志文件。 对于系统日志,系统日志仍然存在,但许多 Linux 发行版已切换到日志日志,要查看分析日志日志,您必须使用 journalctl 命令。

除此之外,还有其他复杂的工具,例如 格雷洛格 使用仪表板和图表进行更深层次的日志分析。 更多内容请参见其他文章。

我希望你从这个看似简单的 Linux 实时日志监控主题中学到了一些新东西。 欢迎您的反馈。