Regola Udev: ACTION == "aggiungi" funziona, ma ACTION == "rimuovi" non funziona!


10

Ho file scritto 90-usb.rulessotto /etc/udev/rules.d/che contiene:

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"

Quando ho collegato il dispositivo udev ACTION=="add"crea la directory per mezzo di RUN+="/bin/mkdir /home/pandya/Desktop/testdir"(che funziona benissimo)

MA quando ho scollegato il dispositivo simile udev ACTION=="remove non rimuove la directory per mezzo diRUN+="/bin/rmdir /home/pandya/Desktop/testdir"

Non ci sono problemi /bin/rmdirperché ho anche controllato sostituendolo con un altro mkdir( RUN+="/bin/mkdir /home/pandya/Desktop/testdir2") ma anche questo non funziona.

Quindi, voglio sapere che Perché l' azione di rimozione non funziona? Come lo aggiusto?


@don_crissti Sì, l'azione utilizzando ENVsta funzionando. Ho provato ENV{ID_MODEL}che sta funzionando bene. Grazie (A proposito se sei interessato a postare una risposta, allora chiedimi di aggiungere l' udevadm monitor --propertyoutput in questione O continuerò a rispondere?)
Pandya

@don_crissti Fatto!
Pandya,

Risposte:


9

Come da questo suggerimento, (qui) commentato da @don_crissti, sto fornendo una soluzione che ha funzionato per me.


Segue l'output di udevadm monitor --propertydurante la rimozione del dispositivo (le linee KERNEL vengono saltate e solo l'ultima rimozione UDEV è allegata di seguito)

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

Dall'alto ho usato Environment nella mia regola udev per e ora la regola udev diventa:ID_MODEL=Micromax_A74ACTION=="remove"

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

Ora viene rimosso testdirper mezzo diACTION=="remove"

Quindi, la soluzione è: utilizzare un ambiente adatto come ID_MODELinvece di ATTR{idVendor}& ATTR{idProduct}inACTION=="remove"


Che ... avvertimento interessante ... :( Grazie udev! E grazie @Pandya :)
Michael Yoo
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.