我正在设置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'"