dmesg查看上次系统重启前日志
dmesg 默认显示的是当前系统运行以来的 内核环形缓冲区(ring buffer)日志,而 系统重启后上一次的 dmesg 日志会被清空,除非系统启用了日志持久化机制(如 systemd-journald 或 rsyslog)。
一、查看上一次启动的内核日志(推荐)
如果系统是 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 | /var/log/dmesg |
可以查看:
1 | cat /var/log/dmesg.old | less |
说明:
/var/log/dmesg是当前启动的/var/log/dmesg.old通常是上一次启动前自动保存的副本(取决于发行版配置)
三、实时持久化方案(防止丢失历史 dmesg)
为了 下次重启还能查看上一次的 dmesg,建议开启 systemd-journald 的日志持久化:
1 | mkdir -p /var/log/journal |
之后,日志会保存在 /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 |
总结对比表:
| 方式 | 命令 | 说明 |
|---|---|---|
| 当前启动日志 | dmesg 或 journalctl -k -b |
当前系统运行的内核日志 |
| 上一次启动日志 | journalctl -k -b -1 |
推荐方式 |
| 传统日志备份 | /var/log/dmesg.old |
老式 sysv 系统可能保留 |
| 列出所有启动记录 | journalctl --list-boots |
查看可用的启动日志编号 |