Linux-笔记 udev机制介绍

目录

前言

概念

规则文件

规则文件的命名

规则文件的语法 

匹配条件

赋值指令

例子


前言

        由于之前利用udev机制实现了一个自动配置某功能的项目,所以这里做一下笔记总结,什么是udev?怎么用?

概念

        udev其实是linux系统中一个设备管理机制,负责在设备连接与断开的时候动态去创建与删除设备节点,并管理设备的命名和权限。当有设备插入或移除的时候,内核会产生“uevent”消息,这些消息会通过 “netlink”套接字发送给用户空间的udev,具体会有一个udevd来监听,它是udev的守护进程。

规则文件

        udev使用一组规则文件来匹配设备信息,并决定如何处理这些设备,规则文件一般位于/etc/udev/rules.d与/lib/udev/rules.d/内,具体为:                     

  • /etc/udev/rules.d:用户自定义规则文件。
  • /lib/udev/rules.d:系统默认的规则文件。
规则文件的命名

规则文件通常以数字开头,数字越小优先级越高。命名格式一般为:

数字-xxx.rules
如:
20-usb0.rules //优先级高
100-usb1.rules //优先级低
规则文件的语法 

规则文件有专门的语法,通常由匹配条件和赋值指令组成,基本格式如下:

匹配条件... , 赋值指令...
·匹配条件:用于筛选符合条件的设备属性。
·赋值指令:用于指定对匹配设备进行的操作
匹配条件

        常用的匹配条件,特别说明的是,编写规则文件只需要提供足够具体的匹配条件来唯一标识目标设备。udev会根据这些条件在文件系统中查找相应设备,并应用匹配的规则。

// ACTION:匹配事件类型(add、remove、change)
ACTION=="add"// DEVNAME:匹配设备节点名称
DEVNAME=="/dev/sda"// KERNEL:匹配内核设备名称
KERNEL=="sda*"// SUBSYSTEM:匹配设备子系统名称
SUBSYSTEM=="usb"// ATTR{key}:匹配设备属性
ATTR{idVendor}=="1234"   //vid厂商id
ATTR{idProduct}=="5678"  //pid产品id// ENV{key}:匹配环境变量
ENV{ID_USB_DRIVER}=="usb-storage"
赋值指令

        常见的赋值指令,run指令是一个很好用的指令,我们可以利用run指令,当我们插上一些设备后让系统自动跑一些脚本去配置功能。

//NAME:设置设备节点名称
NAME="mydevice"//SYMLINK:创建符号链接
SYMLINK+="mydevice"//MODE:设置设备节点权限
MODE="0666"//OWNER:设置设备节点所有者
OWNER="username"//GROUP:设置设备节点所属组
GROUP="groupname"//RUN: 指定设备事件触发的程序或脚本
RUN+="/path/to/script.sh"
例子
ACTION=="add", ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="0901", RUN+="/usr/bin/inserted.sh 2c7c 0904 %k"
  • ACTION=="add":表示当有设备添加时触发该规则。
  • ATTRS{idVendor}=="2c7c":匹配设备的厂商 ID(Vendor ID),即 2c7c
  • ATTRS{idProduct}=="0904":匹配设备的产品 ID(Product ID),即 0904
  • RUN+="/usr/bin/usb-EC200G-inserted.sh 2c7c 0904 %k":当上述条件匹配时,运行指定的脚本 /usr/bin/inserted.sh,并传递厂商 ID、产品 ID 及设备名称(使用 %k 变量)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/861927.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TypeScrip环境安装与基础

TS环境安装与基础 文章目录 一、什么是TypeScript(微软开发的)二、TypeScript的特性三、环境安装node安装配置详解(常用:outDir,strict ) 四、注释方式五、数据类型 一、什么是TypeScript(微软开…

MySQL如何定位慢查询以及使用EXPLAIN对SQL进行性能分析

在数据库的日常运维和开发中,SQL慢查询是一个常见且必须高度关注的问题。它不仅会影响用户体验,还可能对系统稳定性构成严重威胁。尤其是在数据量激增的情况下,如从几千到1万的数据增长到百万级,SQL查询的性能问题尤为突出。最近&…

iOS 其他应用的文件如何在分享中使用自己的应用打开

废话少说 一、第一步:先配置好plist文件 右击info.plist如下图文件打开 根据自己需要配置支持的文件类型,也可使用property List中配置,一样的 其他的文件可是参考文档:System-Declared Uniform Type Identifiers 可复制的代码&am…

我只有一点Python基础,对学习WebGIS开发有帮助吗?

经常有人后台私信问,我只有一点Python基础,对学习GIS开发有帮助吗? 关于这个问题的答案是,当然有!Python适用于WebGIS开发。WebGIS是地理信息系统(GIS)技术与Web技术的结合,而Pytho…

第1章 框架学习的基石与实战策略

第1章框架学习的基石与实战策略 1.1 框架学习的引路人:权威教程的重要性 在编程的世界里,掌握一个框架就像是装备了一套精良的工具,这不仅能显著提升开发速度,还能展现一个程序员的专业水平。对于那些刚刚踏入编程领域的初学者来…

使用sorted对字典排序

有时我们需要按照字典数据的键值对进行排序,这个时候就可以用到sorted函数。 import operator dic{"testA":3,"testC":1,"testB":4,"testD":2} dicnsorted(dic.items(),keyoperator.itemgetter(0)) print(dicn) 比如我们要…

秋招Java后端开发冲刺——设计模式

本文介绍Java中的代理模式,及一些常见的模式应用。 一、Java设计模式 Java中最常见的设计模式主要有23种,如表所示: 表格:Java设计模式分类 类型设计模式创建型模式单例模式(Singleton Pattern)工厂方法…

MYSQL 四、mysql进阶 5(InnoDB数据存储结构)

一、数据库的存储结构:页 索引结构给我们提供了高效的索引方式,不过索引信息以及数据记录都是保存在文件上的,确切说时存储在页结构中,另一方面,索引是在存储引擎中实现的,Mysql服务器上的存储引擎负责对表…

Cesium 实战 - 自定义纹理材质系列之 - 动态扩散效果

Cesium 实战 - 自定义纹理材质系列之 - 动态扩散效果 核心代码完整代码在线示例Cesium 给实体对象(Entity)提供了很多实用的样式,基本满足普通项目需求; 但是作为 WebGL 引擎,肯定不够丰富,尤其是动态效果样式。 对于实体对象(Entity),可以通过自定义材质,实现各种…

World of Warcraft [CLASSIC] Level 70 Dire Maul (DM)

[月牙钥匙] [大型爆盐炸弹] World of Warcraft [CLASSIC] Level 70 厄运之槌,完美贡品,Dire Maul (DM) Foror‘s Compendium of Dragon Slaying 佛洛尔的屠龙技术纲要 因为不是兽王宝宝,而且开始位置放的不对&am…

C# —— 方法参数ref和out的作用

public static void Test(ref int a){a 10;}public static void GetValue(out int x){x 10;} ref 和 out 分别使用在方法的参数前面 ref 关键字可以使参数变成引用类型的参数, int a 10; Test(ref a); Console.WriteLine(a); 如果方法参数不加ref; 结果10&…

洛谷U389682 最大公约数合并

这道题最后有一个性质没有想出来,感觉还是有一点遗憾。 性质一、贪心是不对的 8 11 11 16虽然第一次选择8和16合并是最优的,但是如果合并两次的话8 11 11是最优的。 性质二 、有1的情况就是前k1个,也就是说,很多情况下取前k1都…

0000电子技术基础概述

数电 未来课的基础 以前是模块、器件级 现在是 系统级 价格、性能、 技术更新快速的好处:得到了实惠 坏处:工程师需要不断地学习,不变就容易out,要用发展的眼光看待问题 了解基础知识、还要有前沿概念。 理论课、实践课要相结…

CNN神经网络调参技巧

一、基本网络结构 1.若干块,每块:卷积BN激活池化 2.若干块,每块:卷积激活Dropout 3.若干块,每块:fc激活Dropout 二、技巧 1. 损失曲线 常见曲线是先快速下降后趋于平缓,如果线性下降&…

mybatisplus自带的雪花算法(IdType.ASSIGN_ID)无法自动生成弊端缺点,以及改进方法

前言 今日在使用mybatisplus的雪花算法自动给id赋值时发现怎么都是null的情况,这尼玛测了半天,终于发现巨坑,废话不多说,直接上干货 IService.save 只有调用IService中的save方法才能正常生成id,像IService.saveBatc…

Vue移动端动态表单生成组件

FormCreate 是一个可以通过 JSON 生成具有动态渲染、数据收集、验证和提交功能的表单生成组件。支持6个UI框架,适配移动端,并且支持生成任何 Vue 组件。内置20种常用表单组件和自定义组件,再复杂的表单都可以轻松搞定。 帮助文档 | 源码下载…

Day35:2734. 执行字串操作后的字典序最小字符串

Leetcode 2734. 执行字串操作后的字典序最小字符串 给你一个仅由小写英文字母组成的字符串 s 。在一步操作中,你可以完成以下行为: 选择 s 的任一非空子字符串,可能是整个字符串,接着将字符串中的每一个字符替换为英文字母表中的前…

视频技术朝着8K超高清方向发展,安防监控领域将迎来怎样变化?

一、背景 随着科技的日新月异,视频技术已逐渐成为我们日常生活中不可或缺的一部分。从娱乐、教育到安全监控,视频技术无处不在,并以其独特的方式影响着我们的生活方式。本文将探讨视频技术的发展趋势,并重点关注其在监控领域的应…

【ai】李沐 动手深度学学v2 环境安装:anaconda3、pycharm、d2

cuda-toolkit cuda_12.5.0_windows_network.exe 官方课程网站 第二版资源下载release版本 pycharm版本 李沐 【动手学深度学习v2 PyTorch版】 课程笔记 CUDA 选择11, 实际下载 12.5.0

C++里的异同点

文章目录 1. 可以在构造函数和析构函数中调用虚函数吗?2. 类对象的内存模型(内存布局)3. 菱形继承问题(钻石问题)如何解决?4. 堆和栈内存区别5. static_cast和dynamic_cast异同6. 智能指针的实现机制7. 移动…