搜索结果

×

搜索结果将在这里显示。

🚀 dmesg日志:dmesg

dmesg 命令用于查看和控制内核环形缓冲区(kernel ring buffer)中的消息,是诊断硬件问题、驱动错误和系统启动过程的利器。针对日常巡检,这里为你整理了一份常用命令速查表。


  • dmesg 常用巡检命令速查表

    使用场景 命令示例 说明
    基础查看 dmesg 查看所有内核日志(默认从旧到新)。
    - dmesg | tail -n 50 查看最新的 50 条内核消息。
    - dmesg -wdmesg --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 error

    2. 按严重级别精确过滤

    内核消息有 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

  • ⚠️ 注意事项

    1. 缓冲区是易失的dmesg​ 的内容只存在于内存中,系统重启后会丢失。若需持久化,建议结合 rsyslog​ 将内核日志写入 /var/log/kern.log​(某些发行版)或使用 journalctl -k 查看永久存储的 kernel 日志。
    2. 权限要求:部分系统需要 root​ 权限才能读取 dmesg(如 sudo dmesg)。
    3. 大缓冲区:如果日志输出被截断,可使用 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
发布时间: