Linux上的journalctl命令用法和示例
journalctl 命令可用于查看 Linux 系统上 systemd 收集的所有日志。这包括与系统内核、initrd、各种服务和应用程序以及 systemd 本身相关的日志。 journalctl 命令使查询所有这些日志变得非常轻松,因为 systemd 会收集所有这些不同的日志并将其存储在一个中央位置以供管理员查看。
在本教程中,您将了解如何在 Linux 上使用 journalctl 命令。这将包括经常使用的选项,以及有关如何解释系统日志的信息,因为它们对于外行来说可能相当神秘。检查下面的一些示例以掌握该命令,并在遵循过程中在您自己的系统上尝试一些命令选项。
在本教程中您将学习:
如何在 Linux 上使用 journalctl 命令
如何使用 journalctl 查看记录的错误
如何查看以前的启动日志
journalctl 命令的常用选项
常用选项
Linux 中的journalctl命令基本示例
使用
journalctl
的最基本方法是没有其他选项。这将向您显示已记录的所有内容,如果您的系统已开启任意时间,这些数据肯定会是巨大的数据量。日志条目数达到数百万的情况并不罕见。$ journalctl
检查下面的屏幕截图以查看日志的一般格式。输出将自动通过管道传输到
less
。使用Enter
键逐行滚动,或使用Space
逐页滚动。要退出日志输出,请按键盘上的q
。每次启动的日志都是单独存储的,如果您试图查明最近重新启动之前发生的错误,可以轻松隔离某些日志。使用
--list-boots
选项查看先前启动的所有日志列表。$ journalctl --list-boots
下面的屏幕截图显示
journalctl
可以访问我们系统过去 15 次启动的日志。我们当前的启动用数字 0 表示,我们以前的启动是数字 1。要查看上次系统启动的日志,我们可以使用选项
-b
(启动)和数字-1
。如果您想查看更旧的启动的日志,请指定不同的数字。$ journalctl -b -1
您还可以使用启动 ID 查看上次启动的日志。该字母数字字符串不会改变,与每次启动后继续递增的序列号不同。
$ journalctl -b d1389cc42a75447dba69c0b7f74cc0e9
--since
和--until
选项可用于帮助您隔离在特定时间范围内记录的相关日志。例如,要查看自昨天以来的所有日志:$ journalctl --since yesterday
您还可以将这些选项结合使用。
$ journalctl --since yesterday --until "2 hours ago"
如果您想隔离特定时间范围内的日志条目,请使用带有这两个选项的
YYYY-MM-DD HH:MM:SS
日期格式。$ journalctl --since 2022-10-03 01:00:00 --until 2022-10-04 14:30:00
如果您确定在此期间某处发生了错误或相关事件,并且需要查明发生的确切时间或查看发生时记录的数据,这可能会很有用。
要查看为特定系统服务记录的条目,请使用
-u
标志。例如,要查看 Apache 记录的所有条目:$ journalctl -u apache2.service
要查看一些最新的条目,我们可以使用
-n
选项。默认情况下,这将显示最近 10 个日志条目。$ journalctl -n
要查看最后 100 个条目,请再次使用
-n
标志,但指定其后面的数字。$ journalctl -n 100
您还可以将输出通过管道传输到
tail
命令。要查看journalctl
的最后 100 条条目:$ journalctl | tail -100
注意
您始终可以使用 man 命令来阅读有关 journalctl 命令及其官方文档的更多信息。单击上一个链接可查看如何打开 Linux 系统上任何命令的手册页。
高级用法
journalctl 命令非常简单,但正如您在本文的示例部分中所观察到的,它包含很多选项。其中许多选项都不太引人注目,甚至一些经验丰富的系统管理员也可能不知道它们。然而,它们绝对可以在各种情况下派上用场。在本教程的这一部分中,我们将向您展示 journalctl 命令的一些鲜为人知的选项,但我们认为这些选项很有用。
Linux高级示例中的journalctl命令
要仅查看与内核相关的消息,请使用
-k
选项。$ journalctl -k
由于日志条目如此之多,因此仅查看具有特定优先级的日志条目会很有帮助。优先级最高为0级,最低为7级。日志级别如下:
0: emergency 1: alert 2: critical 3: error 4: warning 5: notice 6: info 7: debug
使用
-p
选项查看特定级别的日志,以及优先级高于该级别的日志。在此示例中,我们将采用级别 3,即标记为错误、严重、警报或紧急情况的任何条目。$ journalctl -p 3
要获取 JSON 格式的输出(这可以使某些程序更容易解析),请使用
-o
选项,如下所示:$ journalctl -o json
或者
$ journalctl -o json-pretty
要查看正在生成的所有日志,请使用
-f
选项。这与tail
命令的-f
选项的作用完全相同。$ journalctl -f
要查看所有日志文件消耗了多少磁盘空间:
$ journalctl --disk-usage
结束语
在本教程中,我们了解了 Linux 上的 journalctl 命令。 journalctl 命令对于需要排除系统错误或监控日志异常情况的用户和管理员来说是必不可少的。如需进一步阅读,请查看我们关于 Systemd 期刊简介的其他教程。