🚀 dmesg日志:dmesg
dmesg命令用于查看和控制内核环形缓冲区(kernel ring buffer)中的消息,是诊断硬件问题、驱动错误和系统启动过程的利器。针对日常巡检,这里为你整理了一份常用命令速查表。
-
dmesg 常用巡检命令速查表
使用场景 命令示例 说明 基础查看 dmesg查看所有内核日志(默认从旧到新)。 - dmesg | tail -n 50查看最新的 50 条内核消息。 - dmesg -w或dmesg --follow实时跟踪新产生的内核消息(类似 tail -f)。- dmesg -H以人类易读的格式输出,每行带时间戳,且支持彩色高亮。 按级别过滤 dmesg -l err仅显示 错误 (ERR) 及以上级别的消息。 - dmesg -l warn,err显示 警告 (WARN) 和错误 (ERR) 。 - dmesg -l emerg,alert,crit,err显示严重级别较高的消息。 按关键字过滤 dmesg | grep -i error查找包含 "error" 的行(忽略大小写)。 - dmesg | grep -i "usb |cpu"查找与 USB 或 CPU 相关的消息。 - dmesg | grep -v "INFO"排除包含 "INFO" 的行。 带时间戳查看 dmesg -T | grep -i "failed"显示可读的日期时间戳(转换自系统启动后的时间)。 - dmesg --time-format=iso以 ISO-8601 格式显示时间戳。 查看启动早期日志 dmesg | head -n 100查看开机启动初期的前 100 条日志(常用于检查硬件初始化)。 清空/读取缓冲区 dmesg -c清空环形缓冲区(谨慎操作,会丢失历史消息)。 - dmesg -s 65536增加读取的缓冲区大小(默认可能截断,增大可获取更多历史)。 查看硬件/驱动信息 dmesg | grep -i memory查找内存相关信息(如内存大小、ECC 错误)。 - dmesg | grep -i "raid|scsi|sas"检查 RAID 或磁盘控制器信息。 - dmesg | grep -i "dma|irq"查看中断和 DMA 分配情况。
-
核心命令详解与实战技巧
1. 实时监控:检测突发问题
当系统出现卡顿、磁盘报错或硬件异常时,用
-w实时观察新消息:dmesg -w结合过滤,只关注错误:
dmesg -w | grep -i error2. 按严重级别精确过滤
内核消息有 8 个级别(0-7),常用级别:
emerg(0) - 系统不可用alert(1) - 必须立即处理crit(2) - 严重条件err(3) - 错误条件warn(4) - 警告条件notice(5) - 普通但重要的通知info(6) - 信息debug(7) - 调试信息
巡检时,重点关注
err 及以上级别:dmesg -l err,crit,alert,emerg #显示所有错误和严重级别消息3. 时间戳分析:定位问题发生时间
默认 dmesg 显示的是自系统启动以来的秒数,不易阅读。使用
-T转换为本地时间:dmesg -T | grep -i "failed"若需要更精确的毫秒级时间,可使用
--time-format=iso。4. 排查硬件故障
- 内存故障:
dmesg -T | grep -i "edac\|mce\|memory"(EDAC 记录 ECC 内存错误,MCE 是 Machine Check Exception) - 磁盘/存储:
dmesg -T | grep -i "ata\|scsi\|i/o error"(查看 I/O 错误) - USB 设备:
dmesg -T | grep -i usb - 网卡:
dmesg -T | grep -i "eth\|net\|firmware"
5. 查看启动阶段日志
系统启动时的硬件初始化信息通常只在 dmesg 开头部分,可以这样快速查看:
dmesg | head -n 200 | less或使用
-T时间戳对比启动顺序。6. 结合其他命令进行统计
统计各类错误出现的次数:
dmesg | grep -i "error" | wc -l查看出现频率最高的前 5 个错误关键字:
dmesg | grep -o -E "\w+ error" | sort | uniq -c | sort -rn | head -5
-
⚠️ 注意事项
- 缓冲区是易失的:
dmesg 的内容只存在于内存中,系统重启后会丢失。若需持久化,建议结合rsyslog 将内核日志写入/var/log/kern.log(某些发行版)或使用journalctl -k查看永久存储的 kernel 日志。 - 权限要求:部分系统需要
root 权限才能读取 dmesg(如sudo dmesg)。 - 大缓冲区:如果日志输出被截断,可使用
dmesg -s 1048576指定更大的缓冲区读取大小。
- 缓冲区是易失的:
-
日常巡检建议
- 每天执行一次快速检查:
dmesg -T -l err,crit,alert,emerg | tail -n 20- 关注重复出现的错误:如大量
"Buffer I/O error"可能预示磁盘故障。 - 与
/var/log/messages 互补:dmesg 侧重于内核和硬件,/var/log/messages还记录应用层信息,两者结合更全面。
掌握这些
dmesg命令,能让你在日常巡检中高效定位硬件及内核相关问题。
阅读:202
发布时间: