dmesg 默认输出全量内核日志,无法按“驱动硬件”子模块联合过滤,需先用 -l err,crit,alert,emerg,warn 限定严重级别,再通过 grep -ie "(pci|nvme|ata|usb|eth|timeout|fail|reset)" 精准匹配硬件/驱动关键词,并排除 probing|booting 等干扰项。

Linux 中 dmesg 默认输出所有内核消息(从 emerg 到 debug),但无法直接用“Level”参数过滤“仅驱动硬件的严重告警”——因为 dmesg 本身不支持按子模块(如“驱动硬件”)+ 日志级别(如 err/crit)联合过滤。它只支持按日志级别(-l)或按内容(grep)筛选,而“驱动硬件告警”需靠关键词识别。
用 -l 限定严重级别(基础过滤)
内核日志级别中,真正代表“严重告警”的是 err、crit、alert 和 emerg。可组合使用:
-
dmesg -l err,crit,alert,emerg—— 只显示这四类最高优先级消息 - 注意:
warn属于警告级,不算“严重”,若要包含常见驱动异常(如 timeout、failed),建议额外加warn - 该命令不区分来源,会混入文件系统、内存管理等其他模块的严重事件
结合关键词精准聚焦驱动与硬件
仅靠级别不够,必须叠加硬件/驱动特征词过滤:
Linux AI 服务器 — 将 Linux 服务器转换为本地 AI 推理集群。使用 systemd、NVIDIA CUDA 实现无头 Linux AI,零 GUI 开销。
dmesg -l err,crit,alert,emerg,warn | grep -i -E "(pci|nvme|ata|usb|eth|enp|ib|phy|firmware|timeout|fail|reset|invalid|not ready|no carrier|link down)"- 覆盖主流总线(PCI/NVMe/ATA/USB)、网络接口(eth/enp/ib)、物理层信号(phy/link/carrier)及典型失败动词
- 小写
-i避免大小写遗漏,-E支持扩展正则,提升匹配效率
排除干扰项,提高结果可信度
某些日志虽含关键词但非真实故障(如启动时 probe 尝试):
- 跳过已知良性提示:追加
| grep -v -i "probing\|initial\|booting\|resuming" - 关注时间近况:加
-T(需 root)看真实时间戳,快速定位最近一次异常 - 避免缓冲区覆盖:若怀疑日志被刷,先执行
dmesg -c清空,再复现问题捕获原始报错
替代方案:用 journalctl 更可靠地按源过滤
对于 systemd 系统,journalctl 可按内核子系统分类,比 dmesg 更精准:
journalctl -k -p err..emerg | grep -i "driver\|hardware\|pci\|nvme"-
journalctl -k SYSLOG_IDENTIFIER=kernel -p 3 | grep -E "(timeout|fail|reset)"(-p 3 = err 及以上) - 优势:日志持久化、支持时间范围(
--since "1 hour ago")、天然隔离 kernel 源










