从命令行如何查看Linux日志

从命令行如何查看Linux日志

在你作为Linux管理员的职业生涯中,应该早晚都会查看日志文件。因为日志文件可以帮助你排查问题,每个经验丰富的管理员在出现问题后,要做的头一件事就是查看日志。

你会发现许多日志:系统日志、内核日志、软件包管理器日志、Xorg日志、启动进程日志、Apache日志、MySQL日志… 你能想到的几乎任何系统都有相应的日志文件。

大多数日志文件位于一个便利的位置:/var/log。这些都是系统和服务日志,你的操作系统或某一项重要服务出现问题时,会高度依赖这些日志。如果是针对特定桌面应用程序的问题,日志文件会被写入到不同的位置(比如Thunderbird把崩溃报告写入到 ‘~/.thunderbird/Crash Reports’)。桌面应用程序把日志写入到何处取决于开发人员,以及应用程序是否允许自定义日志配置。

我们会着重介绍系统日志,因为这是Linux故障排查的核心所在。而这里的一个关键问题是,你如何查看那些日志文件?

幸好,你有众多方法可以查看系统日志,它们都只要从命令行来执行即可。

/var/log 

这是Linux系统上一个至关重要的文件夹。打开终端窗口,执行命令cd /var/log。现在执行命令ls,你就会看到位于该目录下面的日志(见图1)。

从命令行如何查看Linux日志

图1:列出了位于/var/log/下的日志文件

现在,不妨看一看其中一个日志。

使用less查看日志

/var/log里面包含有最重要的日志之一是syslog。这个特殊的日志文件记录下了除验证相关消息之外的一切信息。假设你想查看这一个日志文件的内容,可以迅速执行命令less /var/log/syslog。这个命令会打开syslog日志文件,显示文件首部。然后,你可以使用箭头键每次向下滚动一行,使用空格键每次向下滚动一页,或者使用鼠标轮,轻松滚动浏览文件。

这种方法有一个问题,那就是syslog会变得相当庞大;另外,考虑到你要找的信息极有可能在底部或靠近底部,你可能不想把时间耗费在每次逐行或逐页滚动进入到尾部,由于在less命令中syslog已打开,你还可以按[Shift]+[g]组合键,立即进入到日志文件的尾部。尾部会标以(END)。然后,你可以用箭头键或滚动轮向上滚动,找到你想要的具体信息。

当然,这不是很高效。

使用dmesg查看日志

dmesg命令输出内核环缓冲区。默认情况下,该命令会显示来自内核环缓冲区的所有信息。从终端窗口,执行命令dmesg,整个内核环缓冲区的内容就会输出显示(见图2)。

从命令行如何查看Linux日志

图2:USB外部驱动器显示了需要研究的一个问题

幸好,有一种内置的控制机制让你得以仅仅输出某些程序模块(facility,比如守护进程)。

假设你想查看用户程序模块的日志项,可执行命令dmesg --facility=user。要是有什么信息记录到该工具,它会输出结果。

不像less命令,执行dmesg会显示日志的全部内容,并让你进入到文件尾部。你始终可以使用滚动轮来浏览终端窗口的缓冲区(如果适用的话)。相反,你会想要把dmesg的输出通过管道命令输入到less命令,就像这样:

dmesg | less 

上述命令会输出dmesg的内容,让你可以滚动浏览输出,就像使用less命令查看标准日志那样。

使用tail查看日志

tail命令可能是用于查看日志文件的最方便的工具之一。tail的功能就是输出文件的尾部内容。所以,如果你执行命令tail /var/log/syslog,它只会输出syslog文件的尾部几行。

但是等一下,好玩的并不仅限于此。tail命令有一个很重要的技巧,这需要借助使用-f选项。如果你执行命令tail -f /var/log/syslog,tail会继续监视日志文件,输出写入到文件的下一行。这意味着你可以在终端窗口里面实时关注什么写入到syslog(见图3)。

从命令行如何查看Linux日志

图3:使用tail命令,关注/var/log/syslog

以这种方式使用tail对于排查问题大有帮助。

在关注文件时想退出tail命令,只需按 [Ctrl]+[x]组合键。

你还可以指示tail只关注某几行。假设你只想查看写入到syslog的尾部5行;为此,你可以执行这个命令:

tail -f -n 5 /var/log/syslog 

上述命令会关注syslog的输入,只输出最近的5行。一旦有新的行写入到syslog,它会将最早的那一行从首部删除。这是让关注日志文件这个过程更容易的一种好方法。我强烈建议别使用这种方法来查看少于四五行的日志,因为你最后会发现输入被截断,无法获得某项的全部细节。

还有其他工具

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/14620.html