插入USB设备时运行的东西不起作用

For*_*sed 4 linux usb ubuntu udev kubuntu

我在/etc/udev/rules.d/local.rules制作了一个剧本

SUBSYSTEM=="usb", SYSFS{idVendor=="b58e"}, SYSFS{idProduct=="9e84"}, ACTION=="add", RUN+="notify-send USB"
Run Code Online (Sandbox Code Playgroud)

然后我重新加载udev

 sudo udevadm control --reload-rules
Run Code Online (Sandbox Code Playgroud)

我试图删除除子系统之外的所有内容并运行.我试过运行'='而不是'+ =',我已经厌倦了ATTR而不是SYSFS.我试过"sudo service udev restart"和"sudo reload udev".我拔下设备,然后重新插入它,它不会运行该操作.我尝试将其重命名为70-local.rules并将权限更改为+ x.我已经尝试将'子系统'改为'总线'.我已经尝试将run设置为"/path/test.sh",它具有相同的命令.

Ste*_*ski 10

我不是专家,这不是答案,但我发现以下步骤有助于确定要触发的适当属性:

  1. 定位使用该设备的路径udevadm,lsusbusb-devices.我通常只是使用lsusb并让我的shell中的tab完成指导我.就我而言,路径是/dev/bus/usb/003/007.
  2. 使用udevadm来识别规则写入该设备的属性.就我而言,我用过udevadm info -a --attribute-walk --root --name=/dev/bus/usb/003/007.
  3. 编写规则并检查它是否在触发.在我的情况下,我只是将设备所有者更改为用户"stephen",我很容易通过使用来检查它是否正常工作ls -l /dev/bus/usb/003/007.我对这个案子的规则如下:SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", OWNER="stephen".我有一个类似的规则,让我困惑了一会儿,因为子系统ATTRS不期待ATTR,这就是为什么我建议走属性.后一种情况的规则变为:`SUBSYSTEM =="tty",ATTRS {idVendor} =="0403",ATTRS {idProduct} =="6001",OWNER ="stephen".

当然,man udev总是有帮助的.正如您所说,您应该很难确定您的规则是否正确触发,并且可能最好只是在设备上快速更改所有权,就像我第一步所做的那样.你有时会遇到不良属性或符号链接的麻烦