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变量)。
相关文章:
Linux-笔记 udev机制介绍
目录 前言 概念 规则文件 规则文件的命名 规则文件的语法 匹配条件 赋值指令 例子 前言 由于之前利用udev机制实现了一个自动配置某功能的项目,所以这里做一下笔记总结,什么是udev?怎么用? 概念 udev其实是linux系统中一…...
深度学习基准模型Mamba
深度学习基准模型Mamba Mamba(英文直译:眼镜蛇)具有选择性状态空间的线性时间序列建模,是一种先进的状态空间模型 (SSM),专为高效处理复杂的数据密集型序列而设计。 Mamba是一种深度学习基准模型,专为处理长序列数据而设计&…...
面试专区|【40道移动端测试高频题整理(附答案背诵版)】
iOS应用和Android应用测试有什么侧重点? iOS应用和Android应用测试的侧重点略有不同,主要表现在以下几个方面: 分辨率和屏幕尺寸:Android设备的分辨率和屏幕尺寸多种多样,因此,需要测试更多的分辨率和屏幕…...
vb6多线程异步,VB.NET 全用API实现:CreateThread创建多线程,等待线程完成任务
在VB.NET中,你可以使用API函数来创建多线程并等待线程完成任务。以下是一个示例代码,展示如何使用API函数来实现这个功能: Imports System.Runtime.InteropServices Imports System.ThreadingPublic Class Form1Private Delegate Sub ThreadC…...
Python中计算一个序列中特点值出现的数量,比如 [0,0,0,1,1,0,0,]中1的数量
要计算列表 [0, 0, 0, 1, 1, 0, 0] 中 1 的数量,可以使用 Python 中的 count 方法。这是一个简洁而有效的方法。下面是示例代码: # 定义列表 lst [0, 0, 0, 1, 1, 0, 0]# 计算列表中1的数量 num_ones lst.count(1)# 输出结果 print("Number of 1…...
gitignore
.gitignore 是一个在 Git 版本控制系统中使用的文件,它用于指定在 Git 仓库中哪些文件或目录应该被忽略,即不会被 Git 追踪或记录。这对于一些自动生成的、用户特定的或敏感的文件特别有用,比如编译后的目标文件、日志文件、配置文件中的密码…...
Adobe Premiere 视频编辑软件下载安装,pr全系列分享 轻松编辑视频
Adobe Premiere,自其诞生之日起,便以其卓越的性能和出色的表现,稳坐视频编辑领域的王者宝座,赢得了无数专业编辑人员与广大爱好者的青睐。这款强大的视频编辑软件,凭借其丰富的功能和灵活的操作性,为用户提…...
大屏开发系列——Echarts的基础使用
本文为个人近期学习总结,若有错误之处,欢迎指出! Echarts在vue2中的基础使用 一、简单介绍二、基本使用(vue2中)1.npm安装2.main.js引入3.使用步骤(1)准备带有宽高的DOM容器;(2)初始化echarts实例ÿ…...
指挥中心操作台的形状及空间布局
在现代化的指挥中心,操作台的形状设计至关重要,它不仅影响着操作人员的工作效率和舒适度,还关系到整个指挥系统的运行效果。常见的指挥中心操作台形状多种多样,以满足不同的功能需求和空间布局。 直线型操作台 直线型操作台是最为…...
Linux源码阅读笔记07-进程管理4大常用API函数
find_get_pid find_get_pid(...)函数功能:根据进程编号获取对应的进程描述符,具体Linux内核源码对应函数设计如下: 获取进程描述符,且描述符的count1,表示进程多一个用户 pid_task pid_task(...)函数功能࿱…...
后端之路第三站(Mybatis)——JDBC跟Mybatis、lombok
一、什么是JDBC JDBC就是sun公司研发的一套通过java来操控数据库的工具,对应不同的数据库系统有不同的JDBC,而他们统称【驱动】,这就是上一篇我们提到创建Mybatis项目时要引入的依赖、以及连接数据库四要素里的第一要素。 JDBC有自己一套原始…...
零基础入门怎么学习老挝语字母表?《老挝语翻译通》App真人发音教学,学习老挝语字母发音和词汇句子!
这段老挝文字翻译成中文是什么意思?有什么好用的老挝语翻译工具推荐吗? 快速翻译:中老语言无缝转换,实时翻译,让沟通更流畅。 学习工具:零基础入门到流利对话,老挝语真人发音,让你的…...
linux深度deepin基于rsync和apt-mirror同步软件源及构建本地内网源
目录 一、rsync方式二、apt-mirror方式1.安装apt-mirror2.配置apt-mirror(/etc/apt/mirror.list)3.新建存放目录开始下载 3.发布mirror站点 一、rsync方式 参考官方文档地址: https://www.deepin.org/index/docs/wiki/05_HOW-TO/08_%E9%95%9C%E5%83%8F%E5%8A%A0%E9%…...
场景管理分析平台介绍
在数字化浪潮的推动下,数据已成为企业决策的重要依据。特别是在智能驾驶、虚拟现实和物联网等领域,场景数据的高效管理和利用至关重要。在智能驾驶领域面对海量的场景数据,如何高效处理、精准分析,并将其转化为有价值的决策支持&a…...
SQL Server和Oracle数据库的实时同步
数据同步在大数据应用中扮演着关键角色,它确保了数据的实时性和一致性,为数据分析和决策提供了重要支持。常见的数据同步方式包括ETL实时同步和实时ETL工具,后者可以基于日志追踪或触发器进行分类。不同的数据库系统针对实时同步也有各自的实…...
Python中使用Oracle向量数据库实现文本检索系统
Python中使用Oracle向量数据库实现文本检索系统 代码分析 在本文中,我们将深入分析一个使用Oracle向量数据库实现文本检索系统的Python代码,并基于相同的技术生成一个新的示例。这个系统允许我们存储文档及其嵌入向量,并执行相似性搜索。 代码分析 让我们逐步分析原始代码的主…...
java考试题20道
选择题 编译Java源代码文件的命令是javac javac命令是将Java源代码文件进行编译得到字节码文件(.class文件) java命令是在JVM上运行得到的字节码文件 下面是一个示例: javac test.java -------> test.class java test ------> 运行test.class文件下列那…...
云仓的优势体现在哪里?
云仓,即云仓储,是一种基于互联网和大数据技术的新型仓储管理模式。它通过高度的信息化、自动化和集成化管理模式,为企业提供高效、灵活、智能的仓储解决方案。云仓的优势主要体现在以下几个方面: ———————————————…...
github 设置中文,亲测有效
点进去 安装 选上面第二个,不行再选第一个 GitHub - maboloshi/github-chinese: GitHub 汉化插件,GitHub 中文化界面。 (GitHub Translation To Chinese)...
Spring容器生命周期中如前置运行程序和后置运行程序
在Spring容器加入一个实现了BeanPostProcessor接口bean实例,重写postProcessBeforeInitialization、postProcessAfterInitialization方法,在方法里面写具体的实现,从而达到Spring容器在初如化前或销毁时执行预定的程序,方法如下&a…...
ViGEmBus虚拟手柄驱动全栈技术指南:从内核原理到游戏控制革新
ViGEmBus虚拟手柄驱动全栈技术指南:从内核原理到游戏控制革新 【免费下载链接】ViGEmBus Windows kernel-mode driver emulating well-known USB game controllers. 项目地址: https://gitcode.com/gh_mirrors/vi/ViGEmBus 一、认知虚拟手柄技术:…...
嵌入式开发中的静态代码分析工具与应用
嵌入式代码静态分析工具深度解析1. 静态代码分析技术概述1.1 传统编译器的局限性标准C语言编译器通常只能检测代码中的语法错误和部分潜在缺陷,对于程序架构设计和逻辑层面的问题往往无能为力。这种局限性在嵌入式开发中尤为明显,因为嵌入式系统对代码质…...
跨境云手机适用于哪些场景
跨境云手机适用于多种场景,能为不同用户群体带来便利与价值,对于跨境电商从业者而言,可用于多账号管理与运营,通过在云端虚拟出不同地区、不同配置的手机环境,实现多个店铺账号的同时登录和独立操作,有效规…...
AutoSar标准文档下载全攻略:从官网入口到模块选择(附命名规则解析)
AutoSar标准文档高效获取与深度解析指南 引言 在汽车电子系统开发领域,AutoSar标准已经成为行业公认的架构规范。无论是ECU开发工程师、系统架构师还是测试验证人员,都需要频繁查阅AutoSar官方文档。然而,面对庞大的文档体系和复杂的命名规则…...
基于imfindcircles函数的圆形检测实战:从原理到MATLAB实现
1. 霍夫变换与圆形检测原理 第一次接触圆形检测时,我也被各种数学公式绕得头晕。直到把霍夫变换想象成"投票游戏",才真正理解它的精妙之处。想象一张布满黑白点的图纸,每个黑点都可能属于某个潜在的圆。霍夫变换就像让每个黑点为所…...
360CDN 全系列产品体验:CDN / 高防 / SDK 游戏盾横向测评
作为深耕互联网技术领域多年的开发者,平时无论是个人项目还是公司业务,都经常需要用到CDN加速、网络防护类产品。近期正好完整上手测试了360CDN全系列核心产品,涵盖基础CDN加速、高防CDN、SDK游戏盾三款,全程以真实业务场景为测试…...
Joy-Con Toolkit:让Switch玩家掌控设备的开源管理方案
Joy-Con Toolkit:让Switch玩家掌控设备的开源管理方案 【免费下载链接】jc_toolkit Joy-Con Toolkit 项目地址: https://gitcode.com/gh_mirrors/jc/jc_toolkit 为什么Switch玩家需要专属管理工具? 当你插入Switch游戏卡带时,是否担心…...
ArcGIS Desktop许可证被占满?别慌,这3个方法帮你快速释放Advanced许可(附详细步骤)
ArcGIS Desktop高级许可被占用?3种高效解决方案与实战技巧 当你正在赶制项目报告或处理关键地理数据时,突然弹出的"All ArcGIS for Desktop Advanced licenses are in use"错误提示足以让任何GIS专业人士心跳加速。这种情况往往发生在团队共享…...
Java中高效移除文本文件标点符号的实用指南
本教程详细阐述了在Java中从文本文件中有效删除标点符号的方法。我们将使用Java NIO的Files.lines()结合Streamm API,重点介绍正则表达式p{Punct}强大的功能,以简单、强大的方式实现文本清洁,避免传统硬编码的局限性,从而提高文本…...
SpringBoot+Vue 毕业设计效率提升实战:从脚手架到自动化部署的全链路优化
SpringBootVue 毕业设计效率提升实战:从脚手架到自动化部署的全链路优化 毕业设计是每个计算机相关专业学生必须跨越的一道坎。回想我自己的经历,以及身边同学的故事,一个普遍的现象是:大家往往在技术选型和环境搭建上就耗费了大量…...
