udev 规则文件的写法
来源:互联网 发布:centos 安装mysql5.6 编辑:程序博客网 时间:2024/05/16 05:20
配置文件:
udev的配置文件位于 /etc/udev/ 和 /lib/udev/ ( # 开头的是注释)
udev 的主配置文件是 /etc/udev/udev.conf。 它包含一套变量,允许用户修改 udev 默认值。可以设置的变量如下:
udev_root 设备目录,默认是 /dev
udev_log 日志等级(表示严重程度),跟 syslog 一致,例如: err, info, debug。
规则文件:
udev的规则文件一般位于 /lib/udev/rules.d/ ,也可以位于 /etc/udev/rules.d/。
临时存放规则文件的目录是 /dev/.udev/rules.d/
规则文件是按照字母顺序处理的,不管放在哪个目录。对于相同名字的规则文件, /etc/udev/rules.d 比 /lib/udev/rules.d 优先。
规则文件必须以 .rules 作为扩展名,否则不被当作规则文件。
规则文件的每一行都是 key=value 格式。 key 有两个类型:1)匹配型 key 2)赋值型 key
当所有匹配型 key 都匹配时,该规则即被采用,赋值型 key 就会获得相应的值。
当规则匹配时,可以重命名网络接口, 创建到设备节点的符号链或运行一个指定程序来处理该事件。
一条规则由多个key=value 组成,以英文逗号隔开。 每个 key 有一个操作,取决于操作符,有效的操作符如下:
== 比较是否相等
!= 比较是否不相等
= 给一个key 赋值。 表示一个列表的key会被重置,并且把这个唯一的值传给它
+= 将一个值增加到key中
:= 将一个值传给一个key,并且不允许再修改这个key。
下面的 key 可以匹配设备属性,部分 key 也可用于匹配 sysfs 中的父设备属性,不仅仅是产生事件的那个设备。
如果在一个规则中,有多个key匹配了一个父设备,则这些 key 必须匹配同一个父设备:
ACTION 匹配事件的动作名
DEVPATH 匹配事件的设备devpath
KERNEL 匹配事件的设备名
NAME 匹配网络接口或者设备节点的名字。NAME 只有在前面的规则赋值之后才可以使用。
SYMLINK 匹配设备节点符号链的名字。SYMLINK 只有在前面的规则赋值之后才可以使用。可以有多个 symlinks,只需要匹配一个。
SUBSYSTEM 匹配设备子系统
DRIVER 匹配设备的驱动名。只对绑定到一个驱动的设备有用。
ATTR { filename } 匹配事件设备的 sysfs 属性。
KERNELS 向上搜索devpath,直到找到一个匹配的设备名
SUBSYSTEMS 向上搜索devpath,直到找到一个匹配的子系统名
DRIVERS 向上搜索devpath,直到找到一个匹配的驱动名
ATTRS{ filename } 向上搜索devpath,直到找到一个含匹配 sysfs 属性的设备
ENV{ key }
TAG 设备的 tag
TEST{octal mode mask} 测试一个文件是否存在,可以指定一个8进制的模式掩码。
PROGRAM 执行一个程序。如果程序成功返回, key 为 true。设备的属性被放在被执行进程的环境变量中,该程序
的输出为 stdout, 可以从 RESULT 这个 key 读取。
RESULT 匹配最近一次 PROGRAM 调用的返回字符串。它应该在 PROGRAM 之后使用。
支持一些shell的通配符: * ? [ ]
下面的key 是赋值型 key:
NAME
SYMLINK
OWNER, GROUP, MODE
ATTR { key }
ENV { key }
TAG
RUN
LABEL GOTO 可以跳到的地方
GOTO 跳到下一个带有匹配名字的 LABEL 处。
IMPORT { type }
WAIT_FOR
OPTIONS
NAME, SYMLINK, PROGRAM, OWNER, GROUP、MODE 和 RUN 这些 field 支持一个简单的、类似于 printf 函数的格式字符串替换。
在所有规则被处理之后,在程序执行之前,RUN 格式字符被应用,从而能让程序访问前面已匹配的规则设置的属性。
对于所有其他的 field,当单个规则被处理时,发生字符替换。可用的字符替换如下:
$kernel, %k 该设备的内核名字
$number, %n 该设备的内核号码。例如 sda3 的内核号码是 3。
$devpath, %p 该设备的 devpath
$id, %b 当向上搜索devpath,寻找 SUBSYSTEMS, KERNELS, DRIVERS 和 ATTRS 时,被匹配的设备名字
$driver 当向上搜索devpath,寻找 SUBSYSTEMS, KERNELS, DRIVERS 和 ATTRS 时,被匹配的驱动名字
$attr { file }, %s { file } 一个被发现的设备的 sysfs 属性的值。如果该设备没有该属性,且前面的 KERNELS, SUBSYSTEMS, DRIVERS
或 ATTRS 测试选择的是一个父设备,那么就用父设备的属性。如果属性是一个符号链,符号链的最后一个元素作为返回值。
$env { key }, %E { key } 一个设备属性值
$major, %M 该设备的内核主号码
$minor, %m 该设备的内核次号码
$result, %c 由 PROGRAM 调用的外部程序返回的字符串。如果这个字符串包含空格,可以用 %c{N} 选中第N个字段。
如果这个数字N,后面有一个 + 字符, 则表示选中从这个字段开始的所有后面的字符串 %c { N + }
$parent, %p 父设备的节点名字
$name 设备节点的名字,用一个空格作为分隔符。该值只有在前面的规则赋值之后才存在,或者是remove事件。
$links 当前符号链的列表,用空格隔开。该值只有在前面的规则赋值之后才存在,或者是remove事件。
$root, %r udev_root 的值
$sys, %S sysfs 挂载点
$tempnode, %N 在真正的设备节点创建之前,创建的一个临时的设备节点的名字,这个临时设备节点供外部程序使用。
%% '%' 字符自己
$$ '$' 字符自己
- udev 规则文件的写法
- udev 规则文件介绍
- udev的规则
- udev的自定义规则
- Qt pro文件的写法规则
- Qt pro文件的写法规则
- udev规则
- udev规则
- udev规则
- udev规则
- udev规则
- Git 忽略文件规则:.gitignore文件的几种写法
- udev建立设备节点的规则
- udev规则说明
- udev 规则学习
- udev -- 规则 工具 原理
- udev -- 规则 工具 原理
- 写udev 规则
- Solaris 10 开启NTP服务
- chrome developer tool 调试技巧
- MP4格式分析
- 图文解释XCode常用快捷键的使用
- Android GUI编程模型(MVC设计模式)
- udev 规则文件的写法
- OpenGL光照模型
- 关于float属性
- Apache模块动态加载和静态加载
- 解决MyEclipse 占用内存
- asp +mysql中文乱码解决
- sscanf函数的高级用法
- 修改XP登陆界面教程
- VC调试方法大全