温馨提示×

怎样用dmesg排查系统崩溃

小樊
36
2026-10-18 04:47:56
栏目: 编程语言

dmesg 是排查 Linux 系统崩溃(kernel panic、OOM、硬件错误、驱动异常等)的重要工具。下面按实用流程说明怎么用。


一、dmesg 能告诉你什么

系统崩溃前后,内核会通过 dmesg 打印关键信息,例如:

  • Kernel panic 原因
  • OOM(内存耗尽)杀进程
  • 硬件错误(CPU/MEM/PCIe)
  • 驱动崩溃 / 死锁
  • 文件系统异常

二、系统还能启动时(事后排查)

如果系统重启后还能进系统:

1. 查看完整 dmesg

dmesg
dmesg | less

2. 只看错误和警告

dmesg --level=err,warn

或

dmesg | grep -iE "error|panic|oom|fault|deadlock"

3. 看崩溃前最近的信息(最关键)

dmesg | tail -n 200

4. 带时间戳(更易分析)

dmesg -T

三、典型崩溃信息怎么看

1. Kernel Panic

示例:

Kernel panic - not syncing: Fatal exception

或

BUG: unable to handle page fault

→ 通常是:

  • 驱动 bug
  • 内存损坏
  • 内核模块问题

2. OOM Killer

Out of memory: Kill process 1234 (java)

→ 内存不足,系统杀进程 排查:

dmesg | grep -i oom

3. 硬件错误

mce: [Hardware Error]: CPU 2

或

EDAC MC0: UE error

→ CPU / 内存故障

4. 文件系统问题

EXT4-fs error (device sda1)

→ 磁盘或文件系统损坏


四、系统已经挂死(无法进系统)

方法 1:查看上一次启动的 dmesg

journalctl -k -b -1

(-1 表示上一次启动)

方法 2:保存 dmesg 到文件(提前配置)

dmesg > /var/log/dmesg.txt

或使用 rsyslog / systemd 自动保存。

方法 3:串口 / 网口日志(服务器)

  • 通过 串口终端
  • 或 IPMI / BMC 查看崩溃瞬间输出。

五、提高排查成功率的建议

  1. 开启 kernel.printk 详细日志
  2. 使用 kdump 抓 core dump(最专业)
  3. 定期保存:
    dmesg -T > /var/log/dmesg_$(date +%F).log
    

六、一句话总结

系统崩了先看 dmesg -T | tail,找 panic / oom / hardware error,再结合 journalctl 和 kdump 深入分析。

如果你有具体的 dmesg 报错内容,可以直接贴出来,我可以帮你逐行分析。

0 踩