Regra do Udev: ACTION == “add” está funcionando, mas ACTION == “remove” não está funcionando!

7

Eu escrevi o arquivo 90-usb.rules em /etc/udev/rules.d/ contendo:

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 eu conectei o dispositivo, o udev ACTION=="add" cria um diretório por meio de RUN+="/bin/mkdir /home/pandya/Desktop/testdir" (que funciona bem)

MAS quando eu desconectei dispositivo udev ACTION=="remove não remove o diretório por meio de RUN+="/bin/rmdir /home/pandya/Desktop/testdir"

Não há nenhum problema com /bin/rmdir porque eu também verifiquei substituindo-o por outro mkdir ( RUN+="/bin/mkdir /home/pandya/Desktop/testdir2" ) mas isso também não funciona.

Então, eu quero saber que Por que a ação de remoção não está funcionando? Como faço para corrigir isso?

    
por Pandya 09.01.2015 / 14:05

1 resposta

7

De acordo com este sugestão, (aqui) comentada por @don_crissti Estou fornecendo uma solução que funcionou para mim.

A seguir, a saída de udevadm monitor --property ao remover o dispositivo (as linhas KERNEL são ignoradas e somente a última remoção de UDEV é anexada abaixo)

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

Acima, usei o ambiente ID_MODEL =Micromax_A74 na minha regra do udev para ACTION=="remove" e agora a regra do udev se torna:

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

Agora está removendo testdir por meio de ACTION=="remove"

Assim, a solução é: Use um ambiente adequado, como ID_MODEL em vez de ATTR{idVendor} & ATTR{idProduct} em ACTION=="remove"

    
por 10.01.2015 / 14:05

Tags