Aturan Udev: ACTION == “add” berfungsi, tetapi ACTION == “hapus” tidak berfungsi!

10

Saya telah menulis file di 90-usb.rulesbawah yang /etc/udev/rules.d/berisi:

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"

Ketika saya terhubung ke perangkat udev ACTION=="add"membuat direktori dengan cara RUN+="/bin/mkdir /home/pandya/Desktop/testdir"(yang berfungsi dengan baik)

TETAPI ketika saya mencabut perangkat udev yang serupa ACTION=="remove tidak menghapus direktori dengan caraRUN+="/bin/rmdir /home/pandya/Desktop/testdir"

Tidak ada masalah dengan /bin/rmdirkarena saya juga telah memeriksa dengan menggantinya dengan yang lain mkdir( RUN+="/bin/mkdir /home/pandya/Desktop/testdir2") tetapi ini juga tidak berfungsi.

Jadi, saya ingin tahu bahwa Mengapa tindakan penghapusan tidak berfungsi? Bagaimana saya memperbaikinya?

Pandya
sumber
@don_crissti Ya, aksi dengan menggunakan ENVberfungsi. Saya mencoba ENV{ID_MODEL}yang berfungsi dengan baik. Terima kasih (BTW jika Anda tertarik untuk mengirim jawaban, maka mintalah saya untuk menambahkan udevadm monitor --propertyoutput dalam pertanyaan ATAU saya akan melanjutkan untuk jawaban?)
Pandya
@don_crissti Selesai!
Pandya

Jawaban:

9

Sesuai saran ini , (di sini) dikomentari oleh @don_crissti saya memberikan solusi yang bekerja untuk saya.


Berikut ini adalah output dari udevadm monitor --propertysaat melepas perangkat (garis KERNEL dilewati dan hanya penghapusan UDEV terakhir yang terpasang di bawah)

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

Dari atas saya telah menggunakan Lingkungan dalam aturan udev saya untuk dan sekarang aturan udev menjadi:ID_MODEL=Micromax_A74ACTION=="remove"

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

Sekarang menghapus testdirdengan caraACTION=="remove"

Oleh karena itu, solusinya adalah: Gunakan lingkungan yang sesuai seperti sebagai ID_MODELganti ATTR{idVendor}& ATTR{idProduct}diACTION=="remove"

Pandya
sumber
Apa ... peringatan menarik ... :( Terima kasih udev! Dan terima kasih @Pandya :)
Michael Yoo