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

@don_crisstiできました
Pandya、2015年

回答:


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}ACTION=="remove"


なんと...興味深い警告...:(udevに感謝!そして@Pandyaに感謝:)
Michael Yoo
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.