Udev 규칙: ACTION=="add"는 유효하지만 ACTION=="remove"는 유효하지 않습니다!

Udev 규칙: ACTION=="add"는 유효하지만 ACTION=="remove"는 유효하지 않습니다!

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"

그래서 그 이유를 알고 싶습니다.작업 제거작동하지 않습니까? 어떻게 해결할 수 있나요?

답변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"

관련 정보