规则文件是udev里最重要的部分,默认是存放在/etc/udev/rule.d路劲下。所有的规则文件必须以
“.rules”为后缀名下面是一个简单的规则:
KERNEL=="sda", NAME="my_root_disk", MODE=“0666”
KERNEL是匹配键,NAME和MODE是赋值键。这条规则的意思是,如果一个设备的内核名称为sda,则条件生效,执行后面的赋值:在/dev下产生一个名为my_root_disk的设备文件,并把设备文件的权限设为0660;
udevadm info --attribute-walk --name=/dev/设备文件
udevadm info --attribute-walk --name=/dev/bus/usb/001/005
udev 规则的匹配键
ACTION:事件(uevent)的行为,例如:add(添加设备)、remove(删除设备);KERNEL:内核设备名称,例如:sda,cdrom; DEVPATH:设备的 devpath 路径;
SUBSYSTEM:设备的子系统名称,例如:sda 的系统为 block;
BUS:设备在 devpath 里的总线名称,例如:usb;DRIVER:设备在 devpath 的设备驱动名称,例如:ide-cdrom;
ID:设备在 devpath 里的识别号;
SYSFS{filename}:设备的 devpath 路径下,设备的属性文件 "filename" 里的内容;
ENV{key}:环境变量。在一条规则中,可以设定最多五条环境变量的匹配键;
PROGRAM:调用外部命令;
RESULT:外部命令 PROGRAM 的返回结果。
插入U盘后,可以使用dmesg指令来查看usb口的简陋信息
使用udevadm info --attribute-walk --name=/dev/设备文件,可以看设备的详细信息
当不使用udev来自动挂载U盘时,使用指令mount和umount来实现挂载和解除挂载
upan.rules
ACTION=="add", SUBSYSTEMS=="usb", SUBSYSTEM=="block", RUN{program}+="/bin/mkdir /media/%k" ,RUN{program}+="/usr/bin/systemd-mount --no-block --collect $devnode /media/%k"
ACTION=="add", SUBSYSTEMS=="usb", SUBSYSTEM=="block", RUN{program}+="/bin/mkdir /media/%k" ,
RUN{program}+="/usr/bin/systemd-mount --no-block --collect $devnode /media/%k"
规则文件意思:事件是添加设备,子系统名称是usb,子系统名称是block,执行指令mkdir创建文件夹,执行指令mount挂载U盘到路径下
测试如下
插上U盘
拔下U盘
这里用到tree指令
使用指令sudo apt-get install tree 安装tree的工具