温馨提示×

如何通过dmesg查看硬件错误

小樊
46
2026-10-18 04:43:42
栏目: 编程语言

在 Linux 中,dmesg 可以查看内核环形缓冲区中的消息,很多硬件错误(Hardware Error)会被内核记录到其中(尤其是 CPU、内存、PCIe、电源、磁盘控制器等)。下面按实用方法 → 常见错误类型 → 示例 → 进阶工具来讲。


一、基本查看方式

1️⃣ 直接查看所有内核消息

dmesg

2️⃣ 只查看错误(最常用)

dmesg -T | grep -i error
  • -T:显示人类可读时间
  • -i:忽略大小写

3️⃣ 查看硬件相关错误

dmesg -T | grep -iE "hardware|error|fail|pci|memory|cpu|mce"

二、常见硬件错误类型与关键字

✅ 1. 内存错误(ECC / MCE)

mce: [Hardware Error]: Machine check events logged

查看详细 MCE 信息:

dmesg | grep -i mce

或:

mcelog --ascii < /dev/mcelog

✅ 2. PCIe 设备错误

pcieport 0000:00:1c.0: AER: Corrected error received

过滤 PCIe 错误:

dmesg -T | grep -i pci

✅ 3. 磁盘 / AHCI 错误

ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x0
ata1.00: failed command: READ DMA

查看磁盘错误:

dmesg -T | grep -i ata

✅ 4. CPU 错误

CPU0: Core temperature above threshold

或:

dmesg -T | grep -i cpu

✅ 5. 电源 / ACPI 错误

ACPI Error: Method parse/execution failed

查看:

dmesg -T | grep -i acpi

三、按“严重程度”过滤(推荐)

只看错误和警告

dmesg -T -l err,warn

级别说明:

  • emerg
  • alert
  • crit
  • err
  • warn

四、实时监听硬件错误(排障时很有用)

dmesg -wT | grep -i error

或:

watch "dmesg -T | tail -n 50"

五、dmesg 看不全?可能是这些原因

1️⃣ 日志被覆盖(ring buffer 太小)

dmesg -s 1048576

2️⃣ 使用 systemd(推荐)

journalctl -k | grep -i error

或:

journalctl -k -p err

六、更专业的硬件错误工具(强烈推荐)

工具 用途
mcelog CPU / 内存 MCE
edac-util ECC 内存错误
smartctl 磁盘健康
lspci -vvv PCIe 设备状态
rasdaemon 统一硬件错误收集

例如:

edac-util -v
smartctl -a /dev/sda

七、总结一条“万能命令”

dmesg -T -l err,warn | grep -iE "hardware|mce|pci|memory|cpu|ata|acpi"

如果你愿意,可以:

  • 贴出你的 dmesg 报错片段
  • 告诉我是哪类硬件(内存 / 硬盘 / GPU / 网卡)
  • 我可以直接帮你判断是不是硬件快坏了

0 踩