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
と交換して確認してみましたが、それも動作しなかったので問題ありません。mkdir
RUN+="/bin/mkdir /home/pandya/Desktop/testdir2"
だからその理由を知りたいです。ジョブの削除動作しませんか?どうすれば解決できますか?
答え1
~によるとこれ提案、コメント(ここ)@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
上で私は環境を使用しましたID_MODEL
=Micromax_A74
私のudevルールでは、ACTION=="remove"
udevルールは次のようになります。
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"