udev 运行命令未运行

udev 运行命令未运行

我正在尝试创建一个 udev 规则,以便在通过 USB 连接手机时解锁我的电脑。我找不到该规则正在运行,因此我尝试了一个更简单的规则。这是规则(匿名):

KERNEL=="sd?1", ATTRS{idVendor}=="****", ATTRS{idProduct}=="****", SYMLINK+="phone", RUN+="touch /home/user/udev.touch"

我知道规则正在运行,因为phone -> sdc1正在创建链接但尚未创建文件。我是否必须启用安全设置才能让文件运行外部程序?

答案1

您必须在 RUN 键中使用完整路径,因为(man udev

如果没有给出绝对路径,则程序应位于 /lib/udev 中,否则必须指定绝对路径。程序名称和参数以空格分隔。可以使用单引号来指定带空格的参数。

然而,(bash)脚本本身应该正常运行,也就是说您不需要指定路径。

答案2

我在使用 udev 时遇到了同样的问题。我几乎尝试了所有方法,让脚本在添加和删除设备时正常工作。

这是我编写的代码:

ACTION=="add", KERNEL=="sda1", SUBSYSTEMS=="scsi", ATTRS{model}=="AVV207-0        ", SYMLINK+="Lacie", MODE="0666", RUN+="/bin/sh /usr/bin/udev/lacie-add.sh", OPTIONS="last_rule"
ACTION=="remove", KERNEL=="sda1", RUN+="/bin/sh /usr/bin/udev/lacie-del.sh", OPTIONS="last_rule"

添加OPTIONS="last_rule"参数就成功了。

答案3

我也遇到过这个问题,我可以确认从 12.04 开始您需要指定完整bash路径和完整bash脚本才能使 RUN 命令正常工作。

相关内容