以下是我为 Seagate 500 GB 扩展驱动器创建的一个简单规则,/etc/udev/rules.d/21-persistent-local.rules
该驱动器在虚拟机内运行的 Debian 机器上使用 USB 接口。
ACTION=="add", ENV{DEVTYPE}=="usb_device", ATTRS{ID_SERIAL_SHORT}=="NA453QQS", SUBSYSTEM=="usb", HOTPLUG == 1, \
RUN+="/usr/local/bin/run.sh"
保存后,我运行 I run udevadm trigger
。最后,我插入驱动器并运行udevadm monitor --env
以验证扩展驱动器是否已正确加载,情况确实如此。
add
现在我定义了在操作上应该运行的规则run.sh
。除了两个和run.sh
之外什么都没有。但脚本无法运行。具体来说,没有针对脚本打印任何内容。我在内核中加载的模块会打印退出和进入内核时应该可见的消息。sudo insmod foo.ko
sudo rmmod foo.ko
dmesg
run.sh
这个问题的可能原因是什么?
PS:在上面的规则文件中,我将这两个都用于ATTRS{...}
ID_SERIAL=Seagate_Expansion_NA453QQS ID_SERIAL_SHORT=NA453QQS