内核日志
100%

日志 · 第 4 课

内核日志

学习如何使用 dmesg 和 journalctl 查询当前及已保留的 Linux 内核消息。

内核会发出与启动、驱动程序、设备、文件系统、网络、内存和故障有关的消息。这些记录可以解释底层症状,但单独一条警告并不能证明硬件有缺陷。

读取内核环形缓冲区

dmesg 从内核环形缓冲区读取消息:

$ dmesg --human

该缓冲区容量有限,因此新消息可能覆盖旧消息。访问也可能仅限特权用户。支持 dmesg --follow 的实现可以用它跟踪新内核消息;完成有限时间的重现后应停止跟踪。

为什么较早的内核事件可能没有出现在当前 dmesg 输出中?

使用易读时间戳

原始内核时间戳通常以启动时间为基准。dmesg --ctime--human 可以渲染墙上时钟时间,但转换值取决于时钟历史;如果启动后时钟发生变化,结果可能不准确。在精确事件排序很重要时,应保留相对于启动的时间。

为什么应谨慎看待转换后的 dmesg 墙上时钟时间戳?

查询持久内核记录

在 systemd 主机上,用以下命令查询当前启动的内核记录:

$ journalctl -k -b

如果持久 journal 存储保留了先前启动记录,可查看启动列表并选择其中一次:

$ journalctl --list-boots
$ journalctl -k -b -1

传统 syslog 路由可能创建 /var/log/kern.log 或其他文件,但这取决于配置。保存的 /var/log/dmesg 文件也并非普遍存在,而且可能只代表启动时的快照。

哪个命令请求查看上一次已保留启动的内核消息?

调查内核事件

确定启动、时间戳、设备、子系统以及当时正在进行的操作。查询周围的内核和服务记录,再与硬件清单和当前状态进行比较:

$ journalctl -k -b --since '10 minutes ago'
$ lspci -k
$ lsblk

只使用与相关子系统有关的工具。重新加载驱动程序、解除设备绑定或重启前,应评估对存储、网络、控制台和服务的影响,并保留恢复通道。

面对一条内核警告,最佳响应是什么?

课程已完成

你已完成 内核日志

现在,你可以区分实时内核缓冲区消息与已保留的内核日志。

  • 使用 dmesg 读取容量有限的环形缓冲区。

  • 谨慎解读启动相对时间和转换后的时间戳。

  • 使用 journalctl -k 查询当前或先前启动。

  • 在进行破坏性更改前关联内核消息。

保存学习进度

创建免费账户即可保存本课进度,并在任意设备上继续学习。

创建免费账户
下一节
返回 日志