0

0

Linux内核日志查看方法_dmesg实战应用说明【教程】

冰川箭仙

冰川箭仙

发布时间:2025-12-30 18:05:02

|

198人浏览过

|

来源于php中文网

原创

dmesg需结合-T、-w、-l等参数精准排查:用dmesg -T看时间戳,dmesg -w | grep实时捕获硬件事件,dmesg -l指定日志级别,避免缓冲区过小导致信息丢失。

linux内核日志查看方法_dmesg实战应用说明【教程】

直接看内核日志:dmesg 命令最简用法

dmesg 默认输出全部内核环形缓冲区(ring buffer)内容,但通常刷屏太快、干扰多。实际排查硬件或驱动问题时,应配合过滤和时间控制——不加参数直接跑 dmesg 很可能错过关键信息。

  • 首次查看建议加 -T 显示本地时间戳:dmesg -T
  • 只看最近 20 行:用 dmesg | tail -n 20(注意管道会丢失颜色和部分元数据,但够用)
  • 清空缓冲区前先备份:dmesg > /tmp/dmesg.log,避免误执行 dmesg -C 后无从回溯
  • 某些嵌入式系统或容器环境里 dmesg 可能被禁用或返回空,此时需确认是否启用了 CONFIG_PRINTK 内核配置

按关键字实时监控硬件事件:grep + --follow

USB 插拔、磁盘识别、网卡重置这类瞬态事件,必须用实时跟踪方式捕获。单纯翻历史日志容易漏掉刚发生的那一行。

  • 监听新出现的 USB 设备:dmesg -w | grep -i "usb\|xhci\|ehci"
  • 关注 NVMe 盘异常:dmesg -w | grep -i "nvme\|timeout\|reset"
  • -w(即 --follow)比老版本的 -f 更可靠,它会在缓冲区翻转时自动续读,不会中断
  • 避免用 tail -f /var/log/kern.log 替代——该文件依赖 rsyslog 转发,有延迟且可能丢日志;dmesg -w 是直接读内核缓冲区,零延迟

日志级别与过滤:理解 loglevel 参数的实际影响

内核日志分 8 级(0=emerg 到 7=debug),但默认只显示 4(warning)及以上。很多驱动调试信息(如 probe 流程)是 KERN_DEBUG(级别 7),不显式设置就看不到。

Fireflies.ai
Fireflies.ai

自动化会议记录和笔记工具,可以帮助你的团队记录、转录、搜索和分析语音对话。

下载
  • 显示所有级别(含 debug):dmesg -l emerg,alert,crit,err,warn,notice,info,debug
  • 只看错误和警告:dmesg -l err,warn
  • 临时提升内核 loglevel(需 root):sudo dmesg -n 8,但重启后失效;持久化要改 /proc/sys/kernel/printk 或内核启动参数 loglevel=8
  • 注意:有些厂商驱动(如 NVIDIA)会绕过标准 printk,它们的日志可能不出现在 dmesg 中,得查专用工具(如 nvidia-bug-report.sh

日志被截断或丢失?检查 ring buffer 大小和覆盖策略

内核缓冲区默认只有 16KB(旧内核)或 64KB(5.4+),高频日志(如频繁中断、DMA 错误)极易被覆盖。看到 “Some messages are lost.” 就说明已经丢了。

  • 查当前大小:cat /proc/sys/kernel/dmesg_restrict(0=普通用户可读,1=仅 root)和 cat /proc/sys/kernel/printk(第四个数字是控制台 loglevel)
  • 增大缓冲区(需编译内核时设置):CONFIG_LOG_BUF_SHIFT=18(256KB),但运行时无法调整
  • 启用日志持久化:确保 rsyslogjournald 正常工作,并配置 imkmsg 模块(rsyslog)或 ForwardToKernel=yes(journald)
  • 紧急抓取完整日志:用 dmesg -x -T --color=always | less -R-x 显示优先级标签,less -R 保留颜色,方便快速定位 error/warning 行
dmesg -T -l err,warn | head -n 10
[Mon Apr  1 10:22:34 2024] nvme 0000:01:00.0: PCIe Bus Error: severity=Correctable, type=Physical Layer, (Receiver ID)
[Mon Apr  1 10:22:34 2024] nvme 0000:01:00.0: device has been reset

真正难的不是命令怎么敲,而是判断哪一行是“果”、哪一行是“因”。比如看到 device has been reset,得往回翻 3~5 秒找 PCIe Bus ErrorI/O timeout 才能定位到物理链路问题——缓冲区太小、没开 -T、没设 -l,都会让这个链条断掉。

相关专题

更多
Sass和less的区别
Sass和less的区别

Sass和less的区别有语法差异、变量和混合器的定义方式、导入方式、运算符的支持、扩展性等。本专题为大家提供Sass和less相关的文章、下载、课程内容,供大家免费下载体验。

197

2023.10.12

scripterror怎么解决
scripterror怎么解决

scripterror的解决办法有检查语法、文件路径、检查网络连接、浏览器兼容性、使用try-catch语句、使用开发者工具进行调试、更新浏览器和JavaScript库或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

184

2023.10.18

500error怎么解决
500error怎么解决

500error的解决办法有检查服务器日志、检查代码、检查服务器配置、更新软件版本、重新启动服务、调试代码和寻求帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

260

2023.10.25

alert怎么实现换行
alert怎么实现换行

alert通过使用br标签来实现换行。更多关于alert相关的问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

489

2023.11.07

linux是嵌入式系统吗
linux是嵌入式系统吗

linux是嵌入式系统,是一种用途广泛的系统软件,其特点是:1、linux系统是完全开放、免费的;2、linux操作系统的显著优势是多用户和多任务,保证了多个用户使用互不影响;3、设备是独立的,只要安装驱动程序,任何用户都可以对任意设备进行使用和操作。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

170

2024.02.23

C++ 嵌入式系统开发入门与实践
C++ 嵌入式系统开发入门与实践

本专题将带你系统掌握 C++ 在嵌入式系统中的实战应用,内容覆盖硬件抽象、驱动开发、内存与性能优化、实时系统编程、跨平台编译构建,以及常用嵌入式框架与调试技巧,帮助开发者从零构建可运行于 MCU、ARM 等平台的高性能嵌入式项目。

184

2025.11.18

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

1344

2023.06.21

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

698

2023.06.29

桌面文件位置介绍
桌面文件位置介绍

本专题整合了桌面文件相关教程,阅读专题下面的文章了解更多内容。

0

2025.12.30

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 6.2万人学习

Git 教程
Git 教程

共21课时 | 2.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号