最直接有效的方式是使用 journalctl -b -1 -k 查看上一次启动的内核日志,前提是 systemd-journald 已启用持久化(/var/log/journal/ 存在);若不可用,可检查 /var/log/dmesg 文件,但 dmesg 命令本身仅显示本次启动日志。

要查看上次系统启动时的内核日志,最直接有效的方式是结合 journalctl 和 dmesg 两个工具,因为内核日志本身保存在环形缓冲区中,重启后原始 dmesg 输出会被清空,但若系统启用了 journal 持久化,journalctl 就能回溯上一次启动的内核消息。
用 journalctl 查看上一次启动的内核日志
这是推荐的首选方法,前提是 systemd-journald 已启用日志持久化(即 /var/log/journal/ 目录存在且非空):
- 运行
journalctl -b -1 -k:显示上一次启动(-b -1)的全部内核消息(-k) - 加
--no-pager避免分页干扰,方便配合grep过滤:journalctl -b -1 -k --no-pager | grep -i "error\|warn\|fail\|panic" - 确认历史启动是否可查:先执行
journalctl --list-boots,输出中应有类似-1 xxxxxxxx Mon 2026-10-07...的条目
检查 /var/log/dmesg 文件(部分发行版保留)
某些系统(如旧版 CentOS、RHEL 或启用 rsyslog 转发的环境)会在每次启动后将 dmesg 输出自动保存到文本文件:
- 运行
cat /var/log/dmesg:该文件通常记录的是最近一次启动的完整内核日志 - 注意:它不包含更早启动的日志,且内容等同于当时
dmesg的快照,不会更新 - 若文件不存在,说明系统未配置自动保存,不能依赖此路径
补充:dmesg 本身无法直接看“上次”启动
dmesg 只读取当前内核环形缓冲区,而该缓冲区在新启动后已被覆盖,所以:
-
dmesg显示的是本次启动的内核日志,不是上次的 -
sudo dmesg -c会清空缓冲区并输出旧内容,但仅限当前启动周期内尚未被覆盖的部分,不可靠用于回溯 - 若需长期保留,应确保
rsyslog或journald持久化已开启
实际排查时,建议先运行 journalctl --list-boots 确认历史记录可用,再用 journalctl -b -1 -k 获取干净、带时间戳、可过滤的上一次内核日志。不复杂但容易忽略持久化前提。


















