dmesg查看上次系统重启前日志

dmesg 默认显示的是当前系统运行以来的 内核环形缓冲区(ring buffer)日志,而 系统重启后上一次的 dmesg 日志会被清空,除非系统启用了日志持久化机制(如 systemd-journaldrsyslog)。

一、查看上一次启动的内核日志(推荐)

如果系统是 systemd 管理的(比如 CentOS 7+/RockyLinux/Ubuntu 18.04+),可以用:

1
journalctl -k -b -1

解释:

  • -k :仅显示内核日志(等价于 dmesg 内容)
  • -b -1 :表示上一次启动(-b 0 是当前启动,-b -2 是再上一次,以此类推)

示例:

1
journalctl -k -b -1 | less

如果你要导出查看:

1
journalctl -k -b -1 > /var/log/dmesg-last.log

二、如果系统使用传统 rsyslog,也可能保留在:

1
2
/var/log/dmesg
/var/log/dmesg.old

可以查看:

1
cat /var/log/dmesg.old | less

说明:

  • /var/log/dmesg 是当前启动的
  • /var/log/dmesg.old 通常是上一次启动前自动保存的副本(取决于发行版配置)

三、实时持久化方案(防止丢失历史 dmesg)

为了 下次重启还能查看上一次的 dmesg,建议开启 systemd-journald 的日志持久化:

1
2
mkdir -p /var/log/journal
systemctl restart systemd-journald

之后,日志会保存在 /var/log/journal/ 下,每次启动的日志都能通过 journalctl -b -N 查看。


四、额外技巧:查看系统的启动历史

可以先列出系统的启动记录编号:

1
journalctl --list-boots

输出类似:

-2  2025-10-08 10:23:45 UTC—2025-10-08 20:10:01 UTC
-1  2025-10-09 08:12:14 UTC—2025-10-09 18:35:45 UTC
 0  2025-10-10 09:45:00 UTC—now

然后你可以指定某次:

1
journalctl -k -b -2

总结对比表:

方式 命令 说明
当前启动日志 dmesgjournalctl -k -b 当前系统运行的内核日志
上一次启动日志 journalctl -k -b -1 推荐方式
传统日志备份 /var/log/dmesg.old 老式 sysv 系统可能保留
列出所有启动记录 journalctl --list-boots 查看可用的启动日志编号