Linux udevadm monitor 如何区分内核事件和规则动作
第一次排查 USB、磁盘或虚拟块设备时,我常看到 udevadm monitor 连续打印两组近似的内容。它们不是重复日志:--kernel 看到的是内核发出的 uevent,--udev 看到的是 udev 规则处理后的事件。判断规则是否介入,关键是同时看事件通道、ACTION、DEVPATH 和属性,而不是只盯着某一行输出。
-k只打印 kernel uevent,-u只打印规则处理后的 udev event。-p补充属性,-s block能把观察范围缩到块设备。- monitor 用于看真实事件时序,规则本身的匹配结果应另用
udevadm test验证。
先把监听对象拆成 kernel 与 udev 两条通道
先开一个观察窗口,分别执行下面两条命令。它们只负责选择事件来源,不会修改 udev 规则:
# 分别观察内核事件和 udev 规则处理后的事件
udevadm monitor --kernel
udevadm monitor --udev
# 同时观察两条通道,便于对照同一个设备动作
udevadm monitor --kernel --udev
示意输出里,内核事件通常先出现,随后才有 udev 事件。两者可能共享同一 DEVPATH 和 ACTION=add,但出现时间不同。这里的“先后”只说明观察到的处理阶段,不代表 udev 一定为每个字段创建了新值。

用属性和 subsystem 过滤掉无关噪声
不加参数时,设备事件一多就很难定位。排查块设备时,我更常用属性和 subsystem 过滤:
# 只看 udev 阶段,并打印便于比对的属性
udevadm monitor --udev --property --subsystem-match=block
# 需要区分设备类型时,把 devtype 写进匹配条件
udevadm monitor --kernel --property --subsystem-match=block/disk
--property(短参数 -p)会把事件属性一并打印;--subsystem-match(短参数 -s)按 subsystem[/devtype] 过滤。常用核对字段如下:
| 字段或参数 | 排查作用 | 不要误判成什么 |
|---|---|---|
ACTION | 判断 add、remove、change 等动作 | 不是规则是否匹配的结论 |
DEVPATH | 把两条通道对应到同一个 sysfs 设备 | 不是可直接复制的设备节点 |
DEVNAME | 查看 udev 阶段是否给出设备名 | 不等于内核原始事件必然携带它 |
-s block | 缩小到 block subsystem | 不会改变事件,只改变显示范围 |

从 ACTION、DEVPATH 和时间差判断规则是否介入
真正有用的判断顺序是:先看事件通道,再对比 DEVPATH,然后观察 ACTION 和属性差异。若同一设备先出现 kernel 的 add,稍后出现 udev 的 add,这符合“内核通知—udev 处理”的基本观察模型。若只看 udev 输出,很容易把 DEVNAME、权限或标签等规则结果误写成内核事件。
规则动作也不等于任意脚本都同步完成。monitor 关注的是事件消息与规则处理后的广播,不能单凭一行输出证明某个外部程序已经执行完。要查时序,保留 -k、-u 两路;要查属性来源,打开 -p;要查规则为什么匹配,则进入下一步。
把 monitor 结果和规则测试分开验证
拿到 sysfs 路径后,可以用 udevadm test 模拟一次规则处理。它和 monitor 的职责不同:
# 对指定 sysfs 路径模拟 add,查看规则匹配和处理输出
# 这里的路径只是示例,实际值应从 DEVPATH 或 sysfs 中确认
udevadm test --action=add /sys/class/block/loop0
# 只看实时设备事件,不把模拟测试当成真实插拔
udevadm monitor --kernel --udev --property
test 适合回答“规则会怎样处理这个设备”,monitor 适合回答“真实事件何时到达、经过了哪一层”。二者结果不一致时,先检查模拟路径、ACTION 和当前规则加载状态,不要直接修改匹配条件。
相关问题
为什么只看到 Kernel device events?
可能只启用了 --kernel,也可能 udev 阶段尚未产生可见事件。先确认命令没有带互斥过滤,再用一个明确的 subsystem 缩小范围。
怎么只观察某类块设备?
使用 --subsystem-match=block;若还要区分设备类型,再写成 block/disk 等具体匹配。
规则文件改完,monitor 会重新加载它吗?
monitor 本身只是监听器,不负责重载规则。规则更新后应按发行版的 systemd-udevd 管理方式重新加载,再用 udevadm test 和真实事件分别确认。
记住这条边界就够实用:kernel 是设备事件的起点,udev 是规则处理后的观察点;用 DEVPATH 对齐对象,用 ACTION 判断动作,用 -p 和 -s 减少噪声,排查会比单看一段连续输出可靠得多。
Go http.Request.Clone 复制请求体时为什么不能重复读取
- 上一篇
- Go http.Request.Clone 复制请求体时为什么不能重复读取
- 下一篇
- BroadcastChannel 多标签同步时如何忽略自己发出的消息
-
- 文章 · linux | 3小时前 | Linux · nmcli · NetworkManager · 自动连接 ·
- Linux nmcli 连接自动激活失败时如何查看匹配条件
- 431浏览 收藏
-
- 文章 · linux | 5小时前 |
- Linux ip netns exec 找不到接口时先检查哪个命名空间
- 421浏览 收藏
-
- 文章 · linux | 6小时前 |
- Linux ip rule 优先级冲突时如何判断实际路由表
- 357浏览 收藏
-
- 文章 · linux | 7小时前 | Linux · 权限排查 · setcap · Linux capabilities setcap 文件能力
- Linux setcap 给程序授予能力后如何检查实际生效范围
- 383浏览 收藏
-
- 文章 · linux | 8小时前 |
- Linux getfacl 看到的默认 ACL 如何影响新建文件权限
- 340浏览 收藏
-
- 文章 · linux | 1天前 |
- perf stat 分支怎么配置或排查
- 314浏览 收藏
-
- 文章 · linux | 1天前 |
- huge pages 使用怎么配置或排查
- 317浏览 收藏
-
- 文章 · linux | 1天前 |
- nftables set 地址怎么配置或排查
- 449浏览 收藏
-
- 文章 · linux | 1天前 |
- ss 监听端口怎么配置或排查
- 233浏览 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 485次学习
-
- PubMedQA
- 深入了解PubMedQA生物医学问答数据集,涵盖其核心功能、使用方法及在临床决策、药物研发等场景的应用,助力提升NLP模型性能。
- 26次使用
-
- H2O EvalGPT
- H2O EvalGPT是H2O.ai推出的开源LLM评估平台,提供详细的大模型性能排行榜、行业特定基准测试及A/B测试功能,助您快速选择最适合项目的高性能大语言模型。
- 130次使用
-
- LMArena
- LMArena是加州大学伯克利分校推出的AI模型匿名评测平台。通过盲测投票机制,用户可对比不同大模型回答并生成实时排行榜,助力开发者优化模型及用户选择最佳AI工具。
- 57次使用
-
- HELM
- 深入了解斯坦福推出的HELM(Holistic Evaluation of Language Models)大模型评测体系。本文解析其核心功能、安装配置步骤及应用场景,涵盖准确性、公平性、鲁棒性等多维度指标,助力开发者全面优化语言模型性能。
- 22次使用
-
- OpenCompass
- OpenCompass是上海AI实验室推出的开源大模型评测平台,提供CompassKit、CompassHub和CompassRank三大核心组件,支持LLM及多模态模型的一站式标准化评估与排行榜查询。
- 80次使用
-
- 玩转Go命令行工具Cobra
- 2022-12-31 364浏览
-
- Go 用 io/fs 做配置目录快照:过滤、排序与差异报告小工具
- 2026-07-24 339浏览
-
- Go 命令行表格怎么按列对齐输出
- 2026-09-06 233浏览
-
- Go flag.Func 如何接收重复参数:默认值、解析顺序与错误退出
- 2026-08-29 120浏览
-
- FFmpeg 批量压缩视频实战:CRF、分辨率和输出目录这样配置
- 2026-06-13 122浏览

