如何使用 journalctl 查看和分析 Linux 上的日志

日志消息对于审计和维护健康的 Linux 系统很重要。每台 Linux 计算机都存储不同服务或作业的日志消息。本指南将探讨如何使用journalctl读取和分析日志消息, journalctl是一个命令行工具,用于读取由journald编写的日志消息。

什么是日记?

Journald 是一种系统日志服务,可将日志消息聚合到日志中。它是 systemd 守护进程的一部分,负责在 Linux 中记录事件。日志只是一个二进制文件,用于存储由 journald 生成的日志消息。

日志日志消息不是持久的,因为它们存储在 RAM 中,这是一种易失的存储形式。默认情况下,只要您的 PC 重新启动或断电,日志日志就会丢失或擦除。 Linux 为日志日志分配固定数量的 RAM 以避免堵塞系统内存。

如何使用 journalctl 命令

您可以使用 journalctl 查询 systemd 日志或 journald 日志。系统索引所有日志日志以提高从日志读取日志消息的效率。

注意:本指南使用sudo使用提升的权限运行命令,因为当您以普通 Linux 用户身份运行 journalctl 命令时,它不会列出所有日志消息。

查看所有日志消息

要查看所有 journald 日志,只需运行没有任何参数的 journalctl 命令:

 sudo journalctl

journalctl 命令将按时间顺序列出系统上的所有日志日志。该命令在后台使用less ,这为您提供了与 less 命令相同的导航能力。例如,您可以使用键盘上的FB键浏览日志。

如果您想更改系统输出日志的顺序,即首先显示最新的,您可以在命令中使用-r标志。 -r标志代表Reverse

 sudo journalctl -r

查看内核日志

内核日志在 Linux 上非常重要,因为它们包含与系统启动时相关的信息。要仅查看内核日志,请使用 journalctl 命令指定-k标志:

 sudo journalctl -k

输出还将列出一些内核信息,例如内核版本及其名称。

相关:什么是 Linux 中的内核以及如何检查您的版本?

按特定程序过滤日志日志

您还可以使用 journalctl 查看与特定程序或服务相关的日志。例如,要查看与cron服务关联的日志,请运行以下命令:

 sudo journalctl -u cron

实时查看日志消息

有时您可能希望在记录日志时实时查看日志。为此,发出以下命令:

 sudo journalctl -f

使用Ctrl + C键盘快捷键退出实时视图。

按日期获取日志消息

您可以使用 journalctl 使用时间戳过滤和分析日志。例如,要显示从昨天到现在的日志:

 sudo journalctl --since=yesterday

您可以通过使用详细的“since”和“until”时间戳来更具体,如下所示:

 sudo journalctl --since="2021-07-17 12:00:00" --until="2021-07-17 15:00:00"

Journalctl 将只显示指定时间段的日志消息。

按 UID 或 PID 查看日志消息

您还可以使用用户 ID (UID) 或进程 ID (PID) 过滤日志日志。基本语法是:

 sudo journalctl _UID=0

…其中 0 是 root 帐户的 UID。您还可以将上述命令中的 UID 替换为 PID 或 GID(组 ID)。

格式化 journalctl 输出

要使用特定输出格式查看 journalctl 日志,您应该使用journalctl -o命令,后跟您的首选格式。例如,要以漂亮的 JSON 格式显示日志,请运行以下命令:

 sudo journalctl -o json-pretty

输出:

相关: Linux 系统日志入门

在 Linux 上配置日志

本指南向您展示了如何在 Linux 上使用 journalctl 命令查看和分析日志日志消息。 /var/log/journal目录存储所有日志记录。请注意,并非所有 Linux 发行版都默认启用日记功能。

您可以使用/etc/systemd/journald.conf文件来配置或更改 PC 上的日志配置。除了有效的日志服务之外,如果您认真对待 Linux 服务器的安全性,还必须使用其他几种工具。