UDEV规则文件的结构是怎样的?
时间: 2024-10-18 18:04:20 浏览: 35
UDEV规则文件通常采用XML格式,其基本结构包含以下几个部分:
1. **ACTION**: 定义事件触发类型,比如"add", "remove", "change"等,表示设备何时被添加、移除或属性改变。
2. **DEVPATH**: 特定设备路径,用于匹配具体的设备,通常是`usb*`、`mmcblk*`这样的通用模式,也可以是确切的设备路径。
3. **KERNEL**: 设备的内核名字,如`sd*`, `hd*`等,或者`sysfs`下的属性。
4. **SUBSYSTEM**: 设备所属的子系统,比如`block`代表块设备,`net`代表网络设备。
5. **ATTRIBUTES**: 关键字-值对,用于更细致地描述设备属性,如`ID_MODEL`、`ID_BUS`等。
6. **RUN**: 这里可以放置shell脚本,命令或Python表达式,定义设备被操作后的响应动作,如执行启动服务、挂载文件系统或更改权限等。
7. **TAGS**: 可选标签,用于进一步筛选或分类设备。
一个典型的规则例子如下:
```xml
ACTION=="add", SUBSYSTEM=="block", KERNEL=="sda?", RUN+="/bin/mount /mnt/external sda"
```
这个规则会在新的磁盘sda被添加时,自动将其挂载到/mnt/external。
相关问题
UDEV规则语言是什么样子的?
UDEV规则语言是一种简单易读的文本格式,用于描述设备插入系统时应采取的操作。基本的规则结构包括以下几个部分:
1. **ACTION**:定义设备插入或删除时应该执行的动作,例如`SUBSYSTEM=="block"`, `ACTION=="add"`表示当块设备增加时应用规则。
2. **ATTRIBUTES**:基于设备属性进行匹配,如`ATTRS{idVendor}=="0x1d6b"`, 这里是以USB vendor ID为例。
3. **ENVIRONMENT**:通过环境变量进行匹配,例如`KERNEL=="sd[a-z]*"`,这里匹配的是Linux的磁盘设备名称。
4. **RUN命令**:规则满足后执行的命令,可能是安装设备驱动、创建目录、修改权限等,如`RUN+="/bin/mount /dev/$NAME $DEST"`。
5. **EXECUTABLE**:指定执行某个程序,如`EXEC=+/sbin/modprobe -r $ACTION`,用于卸载模块。
规则通常以`.rules`文件形式存在,并使用注释进行解释。多个规则可以组合在一起,通过逻辑运算符(如`OR`、`AND`)控制动作执行条件。
举个例子:
```bash
# 当检测到新的USB大容量存储设备(ACTION=add)
SUBSYSTEM=="usb", ACTION=="add", ATTR{idVendor}=="0厂家id", ATTR{idProduct}=="0产品id", RUN+="/bin/mount -t vfat /dev/sdb1 /mnt/usb"
```
在实际操作中,开发者会编写针对特定设备类型的规则,以便在系统上实现设备的自动配置和管理。
linux udev rule的规则
Linux UDEV (User Space Device Model) 是一个系统服务,用于动态管理和配置设备。UDEV规则文件是一种XML格式的配置文件,它们定义了当系统检测到新硬件设备插入时应采取的操作,如分配设备名称、创建设备节点、执行特定脚本等。
规则文件通常放在 `/etc/udev/rules.d` 目录下,并以`.rules`为扩展名。每个规则由一系列条件(match)和操作(action)组成,它们按照文件中的顺序处理。规则的基本结构如下:
```xml
ACTION=="ACTION_NAME", KERNEL=="KERNEL_PATTERN", SUBSYSTEM=="SUBSYSTEM", RUN+="/bin/my_script"
```
这里的各部分含义:
- ACTION_NAME:设备的行为,比如"add"表示设备插入,"remove"表示设备移除。
- KERNEL_PATTERN:设备在内核中的名字,常包含像 "sd*" 或 "usb*/*" 这样的模式匹配字符串。
- SUBSYSTEM:描述设备所属的系统层次,如 "block" 对于硬盘,"input" 对于键盘鼠标等。
- RUN+/path/to/script:当条件满足时,执行指定的命令或脚本。
UDEV规则提供了一种灵活的方式来自动化设备管理,使得系统能够适应各种类型的硬件变化而无需重启。
阅读全文