Udev规则:ACTION ==“ add”有效,但ACTION ==“ remove”无效!


10

我已经写文件90-usb.rules/etc/udev/rules.d/包含:

ACTION=="add", ATTR{idVendor}=="0bb4", ATTR{idProduct}=="2008", RUN+="/bin/mkdir /home/pandya/Desktop/testdir"
ACTION=="remove", ATTR{idVendor}=="0bb4", ATTR{idProduct}=="2008", RUN+="/bin/rmdir /home/pandya/Desktop/testdir"

当我插入设备时,udev ACTION=="add"通过以下方式创建目录RUN+="/bin/mkdir /home/pandya/Desktop/testdir"(工作正常)

但是当我拔出类似udev的设备时ACTION=="remove ,不会通过以下方式删除目录RUN+="/bin/rmdir /home/pandya/Desktop/testdir"

这没有问题,/bin/rmdir因为我也检查了另一个mkdirRUN+="/bin/mkdir /home/pandya/Desktop/testdir2")的位置,但这也无法正常工作。

因此,我想知道为什么删除操作不起作用?我如何解决它?


@don_crissti是的,使用的操作ENV正在起作用。我尝试了ENV{ID_MODEL}哪个工作正常。谢谢(顺便说一句(顺便说一句,如果您有兴趣发表答案,然后请我添加udevadm monitor --property有问题的输出,否则我会继续回答吗?))
Pandya 2015年

@don_crissti 完成!
潘迪2015年

Answers:


9

根据建议,@ don_crissti(在这里)评论了我正在提供对我有用的解决方案。


以下是udevadm monitor --property移除设备时的输出(跳过了KERNEL行,并且仅在下面附加了最后一个UDEV移除)

UDEV  [1380.287343] remove   /devices/pci0000:00/0000:00:1d.7/usb1/1-4 (usb)
ACTION=remove
BUSNUM=001
DEVNAME=/dev/bus/usb/001/013
DEVNUM=013
DEVPATH=/devices/pci0000:00/0000:00:1d.7/usb1/1-4
DEVTYPE=usb_device
ID_BUS=usb
ID_MODEL=Micromax_A74
ID_MODEL_ENC=Micromax\x20A74
ID_MODEL_ID=2008
ID_REVISION=0255
ID_SERIAL=MediaTek_Micromax_A74_0123456789ABCDEF
ID_SERIAL_SHORT=0123456789ABCDEF
ID_USB_INTERFACES=:ffff00:
ID_VENDOR=MediaTek
ID_VENDOR_ENC=MediaTek
ID_VENDOR_FROM_DATABASE=HTC (High Tech Computer Corp.)
ID_VENDOR_ID=0bb4
MAJOR=189
MINOR=12
PRODUCT=bb4/2008/255
SEQNUM=2017
SUBSYSTEM=usb
TYPE=0/0/0
USEC_INITIALIZED=446266

从上面开始,我在udev规则中使用了Environment ,现在udev规则变为:ID_MODEL=Micromax_A74ACTION=="remove"

ACTION=="remove", ENV{ID_MODEL}=="Micromax_A74", RUN+="/bin/rmdir /home/pandya/Desktop/testdir"

现在它testdir通过ACTION=="remove"

因此,解决方案是:使用合适的环境(例如)ID_MODEL代替ATTR{idVendor}ATTR{idProduct}inACTION=="remove"


多么有趣的警告... :(谢谢udev!感谢@Pandya :)
Michael Yoo
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.