您知道如何在 Linux 中查看文件。为此,您可以使用 cat 命令或可能使用 less 命令。
这对具有静态内容的文件很有用。但是日志文件是动态的,它们的内容会随着时间而变化。要监视日志,您需要在日志文件的内容更改时对其进行监视。
如何实时查看日志文件的内容?Tail 是用于此目的的最流行的命令,但也有一些其他工具。我将在本教程中向您展示它们。
方法一:使用tail命令查看日志文件
在tail命令是在现实生活中查看日志文件如此受欢迎,系统管理员使用术语“尾日志文件”。
tail 命令主要用于从末尾显示文件的行,因此称为“tail”。
您可以使用该-f
选项来跟踪文件的尾部,这意味着它将继续显示添加到文件中的新行。
tail -f location_of_log_file
Tail命令 和 grep命令
好吧!所以tail命令通过显示现实生活中的文件变化来解决一个问题。但是,当实时发生如此多的快速变化时,连续观察日志文件并不是很有帮助。
在监视日志文件时,您经常会寻找特定的术语。在大量涌入的新线路中发现这一点几乎是不可能的。
为了使事情更容易,像这样组合 tail 和 grep 命令:
tail -f log_file | grep search_term
这很好,对吧?让我们把它弄好一点。
我经常发现只有带有搜索词的行并不能显示必要的细节。这就是为什么我使用 grep 命令在带有 option 的搜索词之前和之后显示几行-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一次监控多个日志文件
Multitail,顾名思义,用于一次显示多个文件。
有什么大不了的?tail 命令也可以这样做,对吗?
但是 Multitail 比传统的 tail 命令有一些优势。它以拆分视图显示文件,您甚至可以在不同的行和列中显示不同的文件。
请记住,tail 在同一视图中显示所有内容,这变得难以遵循。Multitail 通过提供像screen 命令这样的拆分视图来克服这个困难。
Multitail 不是像 tail 这样的基本命令,您可能必须在使用它之前安装它。
您可以向它提供多个文件,但我认为一次跟踪 3 个以上的文件会很困难。
multitail log_file_1 log_file_2
默认情况下,多尾与tail -f
. 它显示最后 100 行,然后进入实时视图。默认情况下,它按行拆分视图。
您可以按 b 打开选择器窗口并选择您选择的日志文件进行查看并滚动浏览以进行进一步深入的分析。
按 q 退出multitail 中的所有类型的视图。
您可以像这样在列中拆分视图:
multitail -s 2 log_file_1 log_file_2
-s
列数和列数之间有一个强制空格。
Multitail 能够做一些其他的事情,但我不会在本教程中详细介绍这些细节。
到目前为止,您已经看到了两种监视日志文件的方法。还有另一种不太传统的方式来查看现实生活中的文件更改,那就是使用 less 命令
方法三:用less命令实时查看日志文件变化
less 命令更多地用于读取文本文件而不会弄乱屏幕。它还可以用于读取具有实时更改的文件。
该选项+F
允许较少跟踪对文本文件所做的更改。
less +F log_file
它打开日志文件,并实时显示写入其中的更改。
按 Ctrl+c 中断,按 q 退出视图。
与 tail 命令不同,此方法允许您快速查看日志更改,而不会弄乱屏幕。
结论
这种在 Linux 中监控日志文件的方法适用于传统的基于文本的日志文件。对于系统日志,syslogs 仍然存在,但许多 Linux 发行版已切换到日志日志,并且要查看日志日志的分析,您必须使用 journalctl 命令。