dmesg 命令是 Linux 系统中查看内核环缓冲区消息的核心工具,堪称系统的“体检报告”。借助它,你可以快速诊断 CPU、内存、磁盘和网络等关键组件的性能瓶颈。那么,如何利用 dmesg 精准定位问题?接下来详细介绍。

打开终端,先执行一条最基础的命令:
dmesg | less
使用该命令后,你可以通过上下箭头或 PageUp/PageDown 键滚动浏览内核环缓冲区记录。由于输出信息量通常很大,建议耐心逐项分析。
首先聚焦 CPU 相关线索。在输出中搜索 “cpu”、“processor” 或 “irq” 等关键词。例如:
[0.000000] CPU: Physical Processor ID: 0
[0.000000] CPU: Processor Core ID: 0
上述信息展示了处理器的基本配置。若出现 “CPU stuck in D state” 或 “CPU overheat” 等异常提示,则需高度警惕——这往往是 CPU 过载或硬件故障的征兆。
接下来关注内存。搜索 “memory”、“vmalloc” 或 “page”。比如:
[0.000000] Memory: 8177688k/16777216k a vailable (8132k kernel code, 1314k rwdata, 4356k rodata, 2240k init, 976k bss, 228480k reserved, 0K cma-reserved)
这一行直接给出了内存的可用情况。一旦出现 “Out of memory” 或 “Page allocation failure” 等消息,基本可以判定内存是瓶颈所在。
磁盘方面,搜索 “sd”、“sda” 或 “ata”。例如:
[0.000000] ata1: SATA max UDMA/133 abar m2048@0xf6000000 port 0xf680 irq 45
这是磁盘控制器的信息。如果看到 “I/O error” 或 “ata_dma_timeout_retry”,说明磁盘可能正在拖慢系统性能。
网络方面,搜索 “eth”、“enp” 或 “r8169”。例如:
[0.000000] r8169 0000:02:00.0 eth0: RTL8169s/8111s Gigabit Ethernet chipset
这条信息展示了网卡型号。若出现 “collisions” 或 “dropped packets”,网络瓶颈就基本确认了。
当然,逐行翻阅效率较低,建议直接使用 grep 快速过滤:
dmesg | grep -i "cpu|memory|sd|eth"
这条命令会将 CPU、内存、磁盘、网络相关的消息全部提取出来,便于集中分析。
由于输出信息繁杂,推荐一个小技巧:将结果重定向到文件,再借助文本编辑器或 grep 进行细致分析:
dmesg > dmesg_output.txt
总结一下排查思路:借助 dmesg 输出,重点扫描 CPU、内存、磁盘、网络四大维度,通过搜索特定关键词定位异常消息,进而采取针对性优化措施。这一方法在排查系统卡顿和性能衰减时极为有效,建议运维人员将其纳入日常检测习惯。
