我在journalctl中看到许多条目“Got意外的辅助数据,级别= 1和类型= 2”,但没有提示这些条目是在哪里生成的。日志条目数量较多。我无法将这些条目与特定服务联系起来。
如何找出哪个服务生成“获取级别 = 1 和类型 = 2 的意外辅助数据”消息?
我在journalctl中看到许多条目“Got意外的辅助数据,级别= 1和类型= 2”,但没有提示这些条目是在哪里生成的。日志条目数量较多。我无法将这些条目与特定服务联系起来。
如何找出哪个服务生成“获取级别 = 1 和类型 = 2 的意外辅助数据”消息?
这是一个简单的问题。
我想要一个概览,例如,带有从journalctl
.
这是一个示例输出:
Jan 17 12:49:45 localhost systemd-coredump[137987]: [?] Process 3045 (xfce4-panel) of user 1000 dumped core.
Module linux-vdso.so.1 with build-id edcc6cf50d839ad9201a67e8d2de3d1bec5c03fd
Module librsvg-2.so.2 with build-id a172ce96c3c2d136fc30361d4c28b4ab736833e6
Metadata for module librsvg-2.so.2 owned by FDO found: {
"type" : "rpm",
"name" : "librsvg2",
"version" : "2.54.5-1.fc37",
"architecture" : "x86_64",
"osCpe" : "cpe:/o:fedoraproject:fedora:37"
}
Module libpixbufloader-svg.so with build-id 77cf182593e5e19b8bde9397d50f0f4d5acffe51
Metadata for module libpixbufloader-svg.so owned by FDO found: {
"type" : "rpm",
"name" : "librsvg2",
"version" : "2.54.5-1.fc37",
"architecture" : "x86_64",
"osCpe" : "cpe:/o:fedoraproject:fedora:37"
}
... lots more similar messages ...
Jan 17 12:49:45 localhost systemd[1]: [email protected]: Deactivated successfully.
嗯,答案很简单——使用命令“journalctl”。
但让我先描述一下问题,
我遇到了一个 ubuntu 服务器崩溃事件,一些 log/.journal 文件被成功提取,接下来处理这个事件的方法是读取/分析这些文件。
正在讨论 2 个请求:
A. Windows环境下如何读取.journal文件
B. 除了使用 Windows 操作系统之外的其他读取 .journal 文件的方法
第一个是最重要的请求,但我跳过了它,因为它似乎太难了,使用另一个带有命令“journalctl --file /path_to_the_file”的 ubuntu 主机可以完美地解决目标。(并通过“将内容导出到 .txt 文件” >”符号)
现在我发现,当使用命令“cat”读取.journal 文件时和之后,控制台显示上会出现乱码,我别无选择,只能重新启动以清除混乱。
命令“vi”也不起作用。
那么,命令“journalctl”是正常浏览.journal 文件的唯一直接方式吗?
我的控制台背景很暗,所以有相当多的 journalctl 输出不可读。
我看到很多关于如何添加颜色的信息!但是我如何完全禁用它呢?
在查看另一台机器上的一些归档日志文件时,我注意到一些日志条目具有不同的__BOOT_ID
值,它们之间的时间间隔非常窄。例如,相隔几毫秒的日志条目将具有不同的__BOOT_ID
值。这应该是不可能的,因为机器无法在这么小的时间间隔内重新启动。
当我运行时,journalctl -o verbose --directory <dir path> | grep -B 30 -A 30 -- "-- Reboot --"
我可以看到引用以下真实示例,其中两个不同的引导 ID 值用于相隔 10 毫秒的日志事件。
Wed 2019-11-13 21:35:58.469925 ...
_TRANSPORT=kernel
PRIORITY=6
SYSLOG_FACILITY=0
SYSLOG_IDENTIFIER=kernel
_BOOT_ID=fec227a60ef24474aacd023d6c02733f
...
...
...
MESSAGE=spi1.0: ttyMAX1 at I/O 0x20 (irq = 30, base_baud = 3000000) is a MAX3109
-- Reboot --
Wed 2019-11-13 21:35:58.470352 ...
_SOURCE_MONOTONIC_TIMESTAMP=0
_TRANSPORT=kernel
PRIORITY=6
SYSLOG_FACILITY=0
SYSLOG_IDENTIFIER=kernel
MESSAGE=Booting Linux on physical CPU 0x0
_BOOT_ID=21b95aabab034009a19d1b7deac80327
...
...
...
我试图搜索可能导致引导 ID 像那样快速更改但没有任何成功的原因。查看版本 ( v243
) 的 systemd 源代码表明,sd_id128_get_boot()
这似乎是用于读取引导 ID 的函数,它只是从文件中读取内核生成的值。
if (sd_id128_is_null(saved_boot_id)) {
r = id128_read("/proc/sys/kernel/random/boot_id", ID128_UUID, &saved_boot_id);
if (r < 0)
return r;
}
*ret = saved_boot_id;
return 0;
最终结果是显示在日志中的重新启动列表,这些重新启动可能毕竟不是重新启动。有趣的是journalctl --list-boots
根本不会将这些显示为重新启动(目前正在尝试理解get_boots()
实现)。
如果有人早些时候看到过这种行为,请欣赏任何想法和意见。我知道这jounalctl --list-boots
是获取重新启动列表的好去处,但我正在尝试使用一组特定的重新启动信息来分析日志。这些误报污染了我正在尝试编写的脚本的结果。
journalctl --boot
打印自启动以来的日志行并journalctl --follow
打印日志的最后 10 行,然后跟随它。但journalctl --boot --follow
不像我期望的那样工作。而不是打印自启动以来的所有日志行,然后跟随日志,它只是忽略--boot
标志。交换旗帜没有任何区别。如何打印自启动以来的所有日志行,然后跟踪日志?
版本信息:
$ journalctl --version
systemd 239
+PAM +AUDIT -SELINUX +IMA +APPARMOR +SMACK -SYSVINIT +UTMP -LIBCRYPTSETUP +GCRYPT -GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID -ELFUTILS +KMOD +IDN2 -IDN +PCRE2 default-hierarchy=hybrid
浏览 journalctl 和 systemd 上的 Archwiki,我没有看到将系统日志配置为以上午和下午的 12 小时格式显示的方法。24 小时格式工作正常;但是,我需要将 24 小时转换为 12 小时,以根据当前系统时间检查日志。是否有 systemd 配置文件或 journalctl 参数(我知道-o
)导致 journalctl 以上午和下午显示 12 小时格式?
自上次重新启动服务以来,是否有规范的方法可以从 journalctl 获取所有日志?我想要做的是重新启动服务并立即查看自启动重新启动以来的所有日志。
我想出了:
$ unit=prometheus
$ sudo systemctl restart $unit
$ since=$(systemctl show $unit | grep StateChangeTimestamp= | awk -F= '{print $2}')
$ sudo systemctl status -n0 $unit && sudo journalctl -f -u $unit -S "$since"
这可能会起作用,但我想知道是否有更具体的说法:重新启动并从那时起给我所有日志。
我想systemd
在 CentOS 上观看服务的输出,就好像我从控制台启动了该服务一样。是的,我可以看到输出journalctl
,但它不会自动滚动到底部。那么我怎样才能看到服务的实时输出呢?
使用sudo journalctl -u {service}
我可以看到特定服务的日志。