Я написал файл 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"
), но это также не работает.
Итак, я хочу знать, почему действие удаления не работает? Как мне это исправить?
ENV
работает. Я пытался,ENV{ID_MODEL}
который работает нормально. Спасибо (кстати, если вам интересно опубликовать ответ, попросите меня добавитьudevadm monitor --property
вывод в вопросе ИЛИ я продолжу за ответ?)Ответы:
Согласно этому предложению, (здесь), прокомментированному @don_crissti, я предоставляю решение, которое сработало для меня.
Ниже выводится информация об
udevadm monitor --property
удалении устройства (строки KERNEL пропускаются, и ниже добавлено только последнее удаление UDEV)Сверху я использовал Environment в своем правиле udev, и теперь правило udev становится:
ID_MODEL
=Micromax_A74
ACTION=="remove"
Теперь это удаление
testdir
с помощьюACTION=="remove"
Следовательно, решение таково : используйте подходящую среду, например,
ID_MODEL
вместоATTR{idVendor}
&ATTR{idProduct}
inACTION=="remove"
источник