首页 文章

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

提问于
浏览
4

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

SUBSYSTEM=="usb", SYSFS{idVendor=="b58e"}, SYSFS{idProduct=="9e84"}, ACTION=="add", RUN+="notify-send USB"

然后我重新加载udev

sudo udevadm control --reload-rules

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

2 回答

  • 3

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

    • 使用 udevadmlsusbusb-devices 找到设备路径 . 我通常只使用 lsusb 并让我的shell中的tab完成指导我 . 就我而言,路径是 /dev/bus/usb/003/007 .

    • 使用 udevadm 标识规则编写的设备属性 . 就我而言,我使用了 udevadm info -a --attribute-walk --root --name=/dev/bus/usb/003/007 .

    • 编写规则并检查它是否只是将设备所有者更改为用户"stephen"并使用 ls -l /dev/bus/usb/003/007 工作's very easy for me to check if it' . 我对此案例的规则如下: SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", OWNER="stephen" . 我有一个类似的规则让我困惑了一会儿,因为子系统期待 ATTRS 而不是 ATTR ,这就是为什么我建议走属性 . 后一种情况的规则变为:`SUBSYSTEM == "tty",ATTRS == "0403",ATTRS == "6001",OWNER = "stephen" .

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

  • 10

    它不会运行该操作

    不,它运行动作 . 问题是它不知道在哪里发送通知,因为在udev启动时没有运行通知框架 . 您需要通过系统总线发送DBus消息,并让用户守护程序捕获该消息并发布通知 .

相关问题