udev规则没有被使用?

udev规则没有被使用?

我正在设置udev在插入和移除(尚未安装)时处理我的外部 USB 硬盘。到目前为止,我制定了两条新规则来/etc/udev/rules.d/10-local.rules记录向文件添加/删除磁盘的操作:

SUBSYSTEM=="block", ATTRS{model}=="2AS", ACTION=="add", RUN+="/bin/echo 'inserted lacie' >> /home/herman/udev_file"
SUBSYSTEM=="block", ATTRS{model}=="2AS", ACTION=="remove", RUN+="/bin/echo 'removed lacie' >> /home/herman/udev_file"

我已启动udevd守护程序并重新插入硬盘多次,但/home/herman/udev_file从未创建。在规则中我使用了命令中的键udevadm info -a -n /dev/sdb这是有问题的硬盘。我在这里做错了什么?正在检测磁盘,我可以mount很好地检测到它。任何帮助表示赞赏。

答案1

udev输出日志信息到/var/log/messages,但默认情况下它只记录错误,并且碰巧您构造了一个命令,它不执行您想要的操作,但也不会出错。重定向>>由您的 shell 处理,并且 udev 不通过 shell 运行命令,因此它实际上是运行二进制文件/bin/echo并向其传递参数'inserted lacie' >> /home/herman/udev_file。如果您更改 udev 以记录更多信息(编辑/etc/udev/udev.conf并添加行udev_log="info"),您将看到它运行该命令,并且输出为'inserted lacie' >> /home/herman/udev_file

就我个人而言,我更喜欢制作简短的 shell 脚本来执行我想要的操作,这样我就可以在不重新启动的情况下编辑它们udev,但您也可以使用它/bin/sh -c来运行命令,以便它将处理重定向:

SUBSYSTEM=="block", ATTRS{model}=="2AS", ACTION=="add", RUN+="/bin/sh -c '/bin/echo inserted lacie >> /home/herman/udev_file'"

相关内容