当我在系统中调试 systemd 错误时,我注意到它journalctl -u没有达到我的预期。例如,我想查看有关systemd-modules-load单位的日志。我这样做有两种方法,它们产生了不同的结果。
-u systemd-modules-load$ journalctl -u systemd-modules-load | tail
Mar 13 15:47:53 dhcp-rhodes-1379.eduroam.cornell.edu systemd[1]: Stopped Load Kernel Modules.
-- Reboot --
Mar 13 15:55:37 localhost.localdomain systemd[1]: Starting Load Kernel Modules...
Mar 13 15:55:37 localhost.localdomain systemd[1]: Started Load Kernel Modules.
Mar 13 15:55:48 localhost.localdomain systemd[1]: Stopped Load Kernel Modules.
-- Reboot --
Mar 13 15:56:09 localhost.localdomain systemd[1]: Started Load Kernel Modules.
Mar 13 15:57:07 localhost.localdomain systemd[1]: Stopped Load Kernel Modules.
-- Reboot --
Mar 13 15:57:24 localhost.localdomain systemd[1]: Started Load Kernel Modules.
Run Code Online (Sandbox Code Playgroud)
journalctl$ journalctl | grep modules | tail
Mar 13 15:57:07 localhost.localdomain audit[1]: SERVICE_START pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=systemd-modules-load comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
Mar 13 15:57:07 localhost.localdomain audit[1]: SERVICE_STOP pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=systemd-modules-load comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
Mar 13 15:57:19 localhost.localdomain systemd-modules-load[225]: Failed to find module 'vboxdrv'
Mar 13 15:57:19 localhost.localdomain systemd-modules-load[225]: Failed to find module 'vboxnetflt'
Mar 13 15:57:19 localhost.localdomain systemd-modules-load[225]: Failed to find module 'vboxnetadp'
Mar 13 15:57:19 localhost.localdomain systemd-modules-load[225]: Failed to find module 'vboxpci'
Run Code Online (Sandbox Code Playgroud)
我期望输出应该有点相同。造成这样的差异有原因吗?
TL;DR:丢失的消息实际上并不是该装置的一部分。此命令将UNIT您要查找的密钥与丢失消息中的密钥结合起来以显示两者:
journalctl UNIT=systemd-modules-load.service + SYSLOG_IDENTIFIER=systemd-modules-load
Run Code Online (Sandbox Code Playgroud)
资源:
将日志输出与 JSON 格式进行比较 ( -o json-pretty) 以显示每个条目的完整参数。
您可以看到该-u systemd-modules-load.service示例包含UNIT密钥,而其他消息则不包含该密钥。相反,非单元消息被识别为来自systemd-modules-load密钥SYSLOG_IDENTIFIER。您可以使用它作为journalctl过滤器来查找丢失的消息。
该问题似乎是一个已知的错误:请参阅问题#5130(您所看到的内容)和问题#2913(根本原因)。
实际单位消息
基础的journalctl -a -u systemd-modules-load.service:
Mar 12 16:42:28 hostname systemd[1]: Stopped Load Kernel Modules.
Run Code Online (Sandbox Code Playgroud)
JSON 格式:
{
"__CURSOR" : "s=c10ff46a8e1c47ea80f86c6e03d04b6e;i=10a21;b=a1b91c592c11472796f9b5d9a1cc0791;m=17880512f0d;t=54a8ea20efe69;x=6034d0bdef17b6ad",
"__REALTIME_TIMESTAMP" : "1489351348256361",
"__MONOTONIC_TIMESTAMP" : "1617060507405",
"_BOOT_ID" : "a1b91c592c11472796f9b5d9a1cc0791",
"PRIORITY" : "6",
"_TRANSPORT" : "journal",
"_MACHINE_ID" : "fefe0acef37f4ae493da96566024a1a5",
"_HOSTNAME" : "hostname",
"_UID" : "0",
"_CAP_EFFECTIVE" : "3fffffffff",
"_GID" : "0",
"SYSLOG_FACILITY" : "3",
"SYSLOG_IDENTIFIER" : "systemd",
"_PID" : "1",
"_COMM" : "systemd",
"_EXE" : "/usr/lib/systemd/systemd",
"_CMDLINE" : "/sbin/init \\boot\\vmlinuz-linux",
"_SYSTEMD_CGROUP" : "/init.scope",
"_SYSTEMD_UNIT" : "init.scope",
"_SYSTEMD_SLICE" : "-.slice",
"CODE_FILE" : "src/core/job.c",
"CODE_LINE" : "804",
"CODE_FUNCTION" : "job_log_status_message",
"RESULT" : "done",
"MESSAGE_ID" : "9d1aaa27d60140bd96365438aad20286",
"UNIT" : "systemd-modules-load.service",
"MESSAGE" : "Stopped Load Kernel Modules.",
"_SOURCE_REALTIME_TIMESTAMP" : "1489351348256146"
}
Run Code Online (Sandbox Code Playgroud)
非单位消息
现在看一下另一条消息。我曾经-b限制上次启动的输出,并grep使用 'd 表示systemd-modules-load字符串:
journalctl -a -b | grep systemd-modules-load
Mar 12 16:43:57 hostname systemd-modules-load[235]: Inserted module 'vboxnetflt'
Run Code Online (Sandbox Code Playgroud)
JSON 格式:
{
"__CURSOR" : "s=c10ff46a8e1c47ea80f86c6e03d04b6e;i=10def;b=e780d0b343454deeaa77e821716fbf06;m=4b8f66;t=54a8ea763fe19;x=b44b1bca6d34c4e4",
"__REALTIME_TIMESTAMP" : "1489351437712921",
"__MONOTONIC_TIMESTAMP" : "4951910",
"_BOOT_ID" : "e780d0b343454deeaa77e821716fbf06",
"PRIORITY" : "6",
"_MACHINE_ID" : "fefe0acef37f4ae493da96566024a1a5",
"_HOSTNAME" : "hostname",
"SYSLOG_FACILITY" : "3",
"_UID" : "0",
"_GID" : "0",
"CODE_FILE" : "src/modules-load/modules-load.c",
"CODE_LINE" : "111",
"CODE_FUNCTION" : "load_module",
"SYSLOG_IDENTIFIER" : "systemd-modules-load",
"_TRANSPORT" : "journal",
"_PID" : "235",
"MESSAGE" : "Inserted module 'vboxnetflt'",
"_SOURCE_REALTIME_TIMESTAMP" : "1489351437693317"
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8045 次 |
| 最近记录: |