news 2026/5/1 10:44:55

【Linux 基础知识系列:第一百九十九篇】Linux 内核日志查看:dmesg 命令

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【Linux 基础知识系列:第一百九十九篇】Linux 内核日志查看:dmesg 命令

一、简介:为什么“看内核日志”是 Linux 基本功?

  • 内核是操作系统地基:驱动、文件系统、内存管理、SELinux、AppArmor 都在内核空间。

  • 用户空间工具(ls、lspci)只能看到“结果”dmesg 能看到“过程”:设备识别、驱动加载、硬件错误、内核崩溃。

  • 典型场景

    • 插入 U 盘无反应 → 用dmesg看是否识别成sdb还是直接报错I/O error

    • 升级内核后网卡消失 → 对比旧内核dmesg日志,看驱动是否probe failed

    • 服务器随机重启 → 通过dmesg -T时间戳定位Hardware ErrorOOMsoft lockup

掌握dmesg= 给 Linux 装了一双“内核透视眼”。


二、核心概念:5 个关键词先搞懂

名词一句话说明本文出现形式
ring buffer内核循环缓冲区,保存启动+运行日志,断电清空dmesg直接读取
printk内核版printf,级别 0~7,数字越小越严重dmesg -l过滤
facility功能域:kern、user、daemon 等dmesg --facility=kern
timestamp两种格式:开机秒数(默认)/ 绝对时间(-Tdmesg -T
loglevel控制台显示阈值,/proc/sys/kernel/printk 控制echo 4 > /proc/sys/kernel/printk

三、环境准备:3 分钟搞定实验沙箱

  1. 系统

    • Ubuntu 20.04+ / CentOS 8+ / Debian 11+(内核 ≥4.15 即可)

  2. 权限

    • 普通用户可读;硬件插拔、错误注入需 root

  3. 安装(通常自带)

    # 验证是否已安装 which dmesg # 若不存在 sudo apt install -y util-linux # Ubuntu/Debian sudo dnf install -y util-linux # CentOS
  4. 实验目录

    mkdir -p ~/dmesg-lab && cd ~/dmesg-lab touch dmesg-boot.log dmesg-current.log

四、实际案例与步骤:由浅入深 5 大关卡

每个脚本均可直接复制,保存后chmod +x xxx.sh && ./xxx.sh跑通。


4.1 基础查看:启动日志、驱动加载一览

#!/usr/bin/env bash # file: 01-basic.sh echo "===== 1. 查看最近 20 行 =====" dmesg | tail -20 echo "===== 2. 人类可读时间 =====" dmesg -T | head -10 echo "===== 3. 只看 ERR/FAIL =====" dmesg -l err,crit,alert,emerg

场景:新机上线,快速扫一眼有无严重错误。


4.2 硬件识别:USB/SATA/PCIe 设备瞬间定位

#!/usr/bin/env bash # file: 02-hardware.sh echo "===== 1. 查找 USB 插入记录 =====" dmesg | grep -i 'usb.*new device' | tail -5 echo "===== 2. 查看硬盘识别序列 =====" dmesg | grep -i 'attached scsi disk' | awk '{print $3,$4}' echo "===== 3. 网卡驱动是否加载 =====" driver=$(dmesg | grep -i 'eth0.*driver' | awk -F: '{print $3}') echo "eth0 驱动: $driver"

实战:U 盘没反应?先dmesg | tail -f再插一次,立刻看到sdb: sdb1I/O error


4.3 实时监控:持续打印新日志(排错神器)

#!/usr/bin/env bash # file: 03-follow.sh echo "Ctrl+C 退出实时模式" dmesg -w | tee dmesg-current.log

场景

  • 热插拔硬盘、网卡瞬间掉线、内核模块insmod失败,都能秒级捕获。


4.4 级别过滤:只看 “错误” 和 “警告”

#!/usr/bin/env bash # file: 04-level.sh # 0=emerg 1=alert 2=crit 3=err 4=warn 5=notice 6=info 7=debug dmesg -l 3,4 -T > error-warn.log echo "已导出错误/警告到 error-warn.log"

技巧

  • 配合watch -n 1 'dmesg -l err'做实时大屏。


4.5 清空与保存:生产排错标准化流程

#!/usr/bin/env bash # file: 05-save.sh # 1. 保存当前 ring buffer(可选) dmesg > dmesg-boot.log # 2. 清空(需要 root) sudo dmesg -C echo "ring buffer 已清空,后续日志纯净" # 3. 触发测试事件(示例:加载模块) sudo modprobe br_netfilter dmesg | tail -10

最佳实践

  • 复现前先-C,避免旧日志干扰。

  • dmesg-boot.log随工单上传,方便研发二次分析。


4.6 高级:结合 journalctl 跨用户空间关联

#!/usr/bin/env bash # file: 06-joint.sh # 内核日志 + 服务日志 时间对齐 journalctl -k -b -0 | tail -20 # -k = dmesg journalctl -u NetworkManager -b | tail -20

场景

  • 网卡掉线时,内核link downNetworkManager同时报device disconnected,两条日志时间对齐,定位根因。


五、常见问题与解答(FAQ)

问题现象解决
dmesg: read kernel buffer failed: Operation not permitted普通用户无权限内核 5.10+ 限制非特权,用sudo dmesgsysctl kernel.dmesg_restrict=0
时间戳全是[ 0.000000]默认相对秒数-T转为绝对时间
清空后dmesg仍不断刷屏某驱动疯狂打印echo 0 > /proc/sys/kernel/printk提高控制台阈值
grep找不到刚插的 U 盘信息被冲掉`dmesggrep -i usbless或提前dmesg -w` 实时看
想导出上次启动日志ring buffer 断电丢失启用持久化见下节

六、实践建议与最佳实践

  1. 持久化 ring buffer(可选)
    Ubuntu 18.04+ 默认启用:/etc/systemd/journald.conf

    Storage=persistent

    重启后journalctl -k -b -1可看上次启动内核日志。

  2. 监控脚本模

    #!/bin/bash # 发现关键字立即告警 tail -Fn0 /var/log/kern.log | \ while read line; do echo "$line" | grep -q "Hardware Error" && \ curl -X POST https://alert-api.example.com -d "msg=HardwareError" done
  3. ELK 采集
    Filebeat 模块system.syslog已含kernel标签,直接索引dmesg内容。

  4. 性能调优
    高频打印驱动加pr_debug()编译,生产环境关闭dynamic_debug

  5. 安全第一
    禁止非特权查看:echo 1 > /proc/sys/kernel/dmesg_restrict,防止信息泄露。


七、总结:一张脑图带走全部要点

dmesg 实战 ├─ 查看:dmesg | less / -T / -l err ├─ 硬件:grep -i usb/eth/sda ├─ 实时:dmesg -w ├─ 保存:> dmesg.log ; sudo -C ├─ 关联:journalctl -k └─ 监控:tail + grep + 告警

掌握dmesg,等于给 Linux 装了“内核级 CCTV”:

  • 开发阶段:驱动 probe 失败?秒级定位。

  • 上线阶段:硬件兼容性一次看清,避免“生产翻车”。

  • 运维阶段:随机重启、OOM、soft lockup 有迹可循。

立刻打开终端,输入dmesg -T | less,从头到尾浏览一次你的机器“人生日记”,你会发现——原来内核早已告诉你答案,只是你还没学会查看。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 3:01:24

别让年龄设限!30 岁成功转型网络安全,解锁人生全新赛道

为什么30岁转行网安是现实的? 1. 网络安全需求不断增长 网络安全这一行业在过去几年中增长非常迅速,原因是互联网发展带来了巨大的数据和信息泄露风险。几乎所有的行业,尤其是金融、电商、医疗、政府等领域,都在面临严峻的网络安…

作者头像 李华
网站建设 2026/5/1 3:01:15

51、INT 10h 视频编程与图形绘制全解析

INT 10h 视频编程与图形绘制全解析 1. 视频模式设置 在将视频模式设置为新值之前,先获取当前视频模式(使用 INT 10h 功能 OFh)并保存到变量中,这样程序退出时就可以恢复原始视频模式。以下是设置视频模式的相关信息: | INT 10h 功能 | 描述 | 接收参数 | 返回值 | 示例…

作者头像 李华
网站建设 2026/5/1 3:02:41

Unitree GO2 ROS2 SDK深度解析:解决机器人开发中的关键挑战

Unitree GO2 ROS2 SDK深度解析:解决机器人开发中的关键挑战 【免费下载链接】go2_ros2_sdk Unofficial ROS2 SDK support for Unitree GO2 AIR/PRO/EDU 项目地址: https://gitcode.com/gh_mirrors/go/go2_ros2_sdk 在实际的机器人开发过程中,开发…

作者头像 李华
网站建设 2026/5/1 3:07:03

GitHack深度解析:高效检测Git泄露与源代码恢复的实用工具

在当今网络安全领域,Git泄露已成为企业面临的重要威胁之一。GitHack作为一款专业的Git泄露检测与源代码恢复工具,能够帮助安全研究人员快速识别和利用.git目录暴露问题,从泄露的Git仓库中恢复完整源代码和历史版本文件。 【免费下载链接】Git…

作者头像 李华
网站建设 2026/4/30 23:13:25

一个让你像聊天一样做PPT的AI工具

你有没有遇到过这种情况:明天就要做汇报了,PPT 还是一片空白;脑子里想法一堆,却被排版、配色、找图这些琐事搞得心力交瘁?别急,现在有一款叫 Banana Slides 的 AI 工具,能让你像聊天一样轻松做出…

作者头像 李华