Heim  >  Artikel  >  Betrieb und Instandhaltung  >  So verwenden Sie „journalctl“ zum Anzeigen und Analysieren von Systemd-Protokollen (mit Beispielen)

So verwenden Sie „journalctl“ zum Anzeigen und Analysieren von Systemd-Protokollen (mit Beispielen)

PHPz
PHPznach vorne
2023-06-10 08:55:492189Durchsuche

如何使用 journalctl 查看和分析 systemd 日志(附实例)

Einführung

Viele Leute sagen, dass systemd nicht gut ist und große Auswirkungen auf das System hat. Dies ist auch ein kontroverses Thema. Aber Sie können nicht leugnen, dass es einen vollständigen Satz an Tools zur Verwaltung und Fehlerbehebung Ihres Systems bietet. Stellen Sie sich vor, wenn Sie auf ein kaputtes System ohne GUI stoßen, könnten Sie das Booten und GRUB durcheinander bringen. In diesem Fall können Sie von einem Live-System booten, Ihre Linux-Partition mounten und die Systemd-Protokolle durchsuchen, um das Problem zu finden.

systemd hat die folgenden drei Grundkomponenten:

  • ​systemd​​: Der System- und Dienstmanager des Linux-Betriebssystems.
  • ​systemd​​:Linux 操作系统的系统和服务管理器。
  • ​systemctl​​ :该命令用于反观和控制 systemd 系统和服务管理器的状态。
  • ​systemd-analyze​​:该命令提供系统启动时的性能统计,并从系统和服务管理器中检索其他状态和跟踪信息。

除了这三个服务外,systemd 还提供其他服务,如 journald、logind、networkd 等。在本指南中,我们将讨论 systemd 的 journald 服务。

journald - systemd 日志服务

根据设计,systemd 提供了一个集中的方式来处理所有来自进程、应用程序等的操作系统日志。所有这些日志事件都由 systemd 的 journald 守护进程来处理。journald 守护进程收集所有来自 Linux 操作系统各处的日志,并将其作为二进制数据存储在文件中。

以二进制数据集中记录事件、系统问题的好处有很多。例如,由于系统日志是以二进制而不是文本形式存储的,你可以以文本、JSON 对象等多种方式进行转译,以满足各种需求。另外,由于日志是按顺序存储的,通过对日志的日期/时间操作,超级容易追踪到单个事件。

请记住,journald 收集的日志文件数以千行计,而且不断更新每次开机、每个事件。因此,如果你有一个长期运行的 Linux 操作系统,日志的大小应该以 GB 为单位。由于有着数以千计的日志,最好用基本命令进行过滤,以了解更多系统问题。

journald 配置文件

journald 的配置文件存在于以下路径中。它包含了关于如何进行日志记录的各种标志。你可以看一下这个文件,并进行必要的修改。但我建议不要修改这个文件,除非你知道自己在做什么。

/etc/systemd/journald.conf

journald 存储二进制日志文件的地方

journald 以二进制格式存储日志。它们被保存在这个路径下的一个目录中:

/var/log/journal

例如,在下面的路径中,有一个目录包含了迄今为止的所有系统日志。

如何使用 journalctl 查看和分析 systemd 日志(附实例)

journalctl log file path

不要使用 ​​cat​​ 命令,也不要使用 ​​nano​​ 或 ​​vi​​systemctl​​: Dieser Befehl wird verwendet, um den Status des systemd-Systems und des Dienstmanagers zu überprüfen und zu steuern.

​systemd-analyze​​: Dieser Befehl stellt Leistungsstatistiken zum Systemstart bereit und ruft zusätzliche Status- und Ablaufverfolgungsinformationen vom System- und Service-Manager ab.

Zusätzlich zu diesen drei Diensten bietet systemd auch andere Dienste wie Journald, Logind, Networkd usw. an. In diesem Handbuch besprechen wir den Journald-Dienst von systemd.

journald – systemd-Journaldienst

Systemd bietet von Grund auf eine zentrale Möglichkeit, alle Betriebssystemprotokolle von Prozessen, Anwendungen usw. zu verwalten. Alle diese Protokollereignisse werden vom Journald-Daemon von systemd verarbeitet. Der Journald-Daemon sammelt alle Protokolle aus dem gesamten Linux-Betriebssystem und speichert sie als Binärdaten in Dateien.

Die zentrale Erfassung von Ereignissen und Systemproblemen in Binärdaten bietet viele Vorteile. Da Systemprotokolle beispielsweise in Binärform und nicht in Textform gespeichert werden, können Sie sie in Text, JSON-Objekte und mehr übersetzen, um verschiedenen Anforderungen gerecht zu werden. Da die Protokolle außerdem sequentiell gespeichert werden, ist es sehr einfach, einzelne Ereignisse durch Datums-/Uhrzeitmanipulation der Protokolle zu verfolgen. 如何使用 journalctl 查看和分析 systemd 日志(附实例)

Bitte denken Sie daran, dass die von Journald gesammelten Protokolldateien Tausende von Zeilen umfassen und bei jedem Start und jedem Ereignis ständig aktualisiert werden. Wenn Sie ein Linux-Betriebssystem mit langer Laufzeit haben, sollte die Protokollgröße daher in GB angegeben werden. Da es Tausende von Protokollen gibt, filtern Sie diese am besten mit einfachen Befehlen, um mehr über Systemprobleme zu erfahren.

journald-Konfigurationsdatei

journalds Konfigurationsdatei befindet sich im folgenden Pfad. Es enthält verschiedene Flags, wie die Protokollierung erfolgen soll. Sie können sich diese Datei ansehen und die notwendigen Änderungen vornehmen. Ich empfehle jedoch, diese Datei nicht zu ändern, es sei denn, Sie wissen, was Sie tun. 🎜
journalctl
🎜journald Wo binäre Protokolldateien gespeichert werden 🎜🎜journald speichert Protokolle im Binärformat. Sie werden in einem Verzeichnis unter diesem Pfad gespeichert: 🎜
journalctl --utc
🎜 Im folgenden Pfad befindet sich beispielsweise ein Verzeichnis, das alle bisherigen Systemprotokolle enthält. 🎜🎜So verwenden Sie Journalctl zum Anzeigen und Analysieren von Systemd-Protokollen (mit Beispielen)🎜 🎜🎜Journalctl-Protokolldateipfad🎜🎜🎜Verwenden Sie nicht ​​cat​​ und verwenden Sie nicht ​​nano​​ oder ​​vi​​ Da sie binär sind, können sie nicht normal angezeigt werden. 🎜🎜Verwenden Sie „journalctl“, um Systemd-Protokolle anzuzeigen und zu analysieren

该命令提供了所有应用程序和进程的日志条目,包括错误、警告等。它显示的列表中,最旧的日志在顶部,当前的日志在底部。你需要不断按回车键来逐行滚动浏览。你也可以使用 ​​PAGE UP​​ 和 ​​PAGE DOWN​​ 键来滚动。按 ​​q​​ 键可以退出这个视图。

如何以不同时区的时间查看日志条目

默认情况下,​​journalctl​​ 以当前系统时区显示日志的时间。然而,你可以很容易地在命令中提供时区,将同一日志转换为不同的时区。例如,要以 UTC 查看日志,请使用以下命令:

journalctl --utc

如何使用 journalctl 查看和分析 systemd 日志(附实例)

journalctl --utc

如何在日志中只查看错误、警告等信息

系统产生的日志有不同的优先级。有些日志可能是可以忽略的警告,有些可能是重要的错误。你可能想只看错误,不看警告。这也可以用下面的命令来实现。

要查看紧急系统信息,请使用:

journalctl -p 0

如何使用 journalctl 查看和分析 systemd 日志(附实例)

journalctl -p 0

错误代码:

0: 紧急情况
1: 警报
2: 危急
3: 错误
4: 警告
5: 通知
6: 信息
7:调试

当你指定错误代码时,它显示该等级及更高的所有信息。例如,如果你指定下面的命令,它会显示所有优先级为 2、1 和 0 的信息:

journalctl -p 2

如何查看特定启动的日志

当你运行 ​​journalctl​​ 命令时,它会显示当前启动的信息,即你正在运行的会话中的信息。但也可以查看过去的启动信息。

在每次重启时,日志都会持续更新。journald 会记录不同启动时的日志。要查看不同启动时的日志,请使用以下命令。

journalctl --list-boots

如何使用 journalctl 查看和分析 systemd 日志(附实例)

journalctl list-boots

  • 第一个数字显示的是 journald 的唯一的启动跟踪号码,你可以在下一个命令中使用它来分析该特定的启动。
  • 第二个数字是启动 ID,你也可以在命令中指定。
  • 接下来的两个日期、时间组合是存储在相应文件中的日志的时间。如果你想找出某个特定日期、时间的日志或错误,这就非常方便了。

要查看一个特定的启动号码,你可以选择第一个启动跟踪号码或启动 ID,如下所示。

journalctl -b -45
journalctl -b 8bab42c7e82440f886a3f041a7c95b98

如何使用 journalctl 查看和分析 systemd 日志(附实例)

journalctl -b 45

你也可以使用 ​​-x​​ 选项,在显示屏上添加 systemd 错误信息的解释。在某些情况下,这是个救命稻草。

journalctl -xb -p 3

如何使用 journalctl 查看和分析 systemd 日志(附实例)

journalctl -xb

如何查看某一特定时间、日期的日志记录

​journalctl​​ 功能强大,可以在命令中提供类似英语的参数,用于时间和日期操作。

你可以使用 ​​--since​​ 选项与 ​​yesterday​​、​​today​​、​​tomorrow​​ 或 ​​now​​ 组合。

下面是一些不同命令的例子。你可以根据你的需要修改它们。它们是不言自明的。以下命令中的日期、时间格式为 ​​"YYYY-MM-DD HH:MM:SS"​

journalctl --since "2020-12-04 06:00:00"
journalctl --since "2020-12-03" --until "2020-12-05 03:00:00"
journalctl --since yesterday
journalctl --since 09:00 --until "1 hour ago"

如何使用 journalctl 查看和分析 systemd 日志(附实例)

journalctl --since 09:00 --until

你也可以将上述内容与错误级别开关结合起来。

如何查看内核特定的日志记录

Linux 内核信息也可以从日志中提取出来。要查看当前启动时的内核信息,请使用以下命令:

journalctl -k

如何查看某个服务、PID 的日志

你可以从 journald 日志中过滤出某个 systemd 服务单元的特定日志。例如,如果要查看 NetworkManager 服务的日志,请使用下面的命令。

journalctl -u NetworkManager.service

如何使用 journalctl 查看和分析 systemd 日志(附实例)

journalctl NetworkManager service

如果你不知道服务名称,可以使用下面的命令来列出系统中的 systemd 服务。

systemctl list-units --type=service

如何查看用户、组的日志

如果你正在分析服务器日志,在多个用户登录的情况下,这个命令很有帮助。你可以先用下面的命令从用户名中找出用户的 ID。例如,要找出用户 ​​debugpoint​​ 的 ID:

id -u debugpoint

然后使用 ​​_UID​​ 选项指定该 ID 与来查看该用户产生的日志。

journalctl _UID=1000 --since today

如何使用 journalctl 查看和分析 systemd 日志(附实例)

journalctl _UID

同样地,使用 ​​_GID​​ 选项也可以查到用户组的情况。

如何查看一个可执行文件的日志

你也可以查看某个特定程序或可执行文件的日志。例如,如果你想找出 ​​gnome-shell​​ 的信息,你可以运行以下命令。

journalctl /usr/bin/gnome-shell --since today

如何使用 journalctl 查看和分析 systemd 日志(附实例)

journalctl gnome-shell

Fazit

Ich hoffe, dieser Leitfaden kann Ihnen dabei helfen, ​journalctl​​ zu verwenden, um Systemd-Protokolle auf Ihrem Linux-Desktop oder -Server anzuzeigen und zu analysieren und Fehler zu beheben. Wenn Sie wissen, wie Sie diese Befehle verwenden, ist die Systemd-Protokollverwaltung sehr leistungsfähig und kann Ihnen das Debuggen erleichtern. Alle großen Linux-Distributionen verwenden jetzt systemd. Ubuntu, Debian, Fedora und Arch verwenden alle systemd als Standard-Betriebssystemkomponente. Wenn Sie mehr über Linux-Distributionen erfahren möchten, die systemd nicht verwenden, sollten Sie sich ​​MX-Linux​​, Gentoo, Slackware, Void Linux ansehen.

Das obige ist der detaillierte Inhalt vonSo verwenden Sie „journalctl“ zum Anzeigen und Analysieren von Systemd-Protokollen (mit Beispielen). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:51cto.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen