Відповіді:
Для загального використання, якщо ви хочете запустити свою програму для будь-якого USB-накопичувача. Використовуйте драйвер для відповідності правилам.
Додати udev
файл правил
sudo nano /etc/udev/rules.d/90-detect-storage.rules
Додайте це правило
ACTION=="add", DRIVERS=="usb-storage", DRIVER=="sd", RUN+="/pathto/yourprogram"
Якщо ви хочете, щоб ваша програма розрізняла диски, тому вона виконує різні операції, використовуйте (ви можете передати її порядковий номер або будь-який атрибут, який вам подобається):
ACTION=="add", DRIVERS=="usb-storage", DRIVER=="sd", RUN+="/pathto/yourprogram $env{ID_VENDOR_ID} $env{ID_MODEL_ID}"
Перезавантажте всі правила
sudo udevadm control --reload-rules
Від'єднайте та підключіть флешку
Примітки:
Це правило я використовував лише для тестування, який створює журнал, коли це правило запускається:
ACTION=="add", DRIVERS=="usb-storage", DRIVER=="sd", RUN+="/bin/sh -c 'echo $env{ID_VENDOR_ID} $env{ID_MODEL_ID} >> /home/username/Desktop/usb-storage.log'"
Ви можете коментувати правила, які вам не потрібні, додавши #
на початок рядка. Файл правил може містити кілька правил.
Щоб перевірити всі доступні env
змінні, використовуйте:
ACTION=="add", DRIVERS=="usb-storage", RUN+="/bin/sh -c 'echo == >> /home/username/Desktop/usb-storage-env.log; env >> /home/username/Desktop/usb-storage-env.log'"
Щоб перевірити параметри, які використовуються для відповідності правилам, запустіть:
sudo udevadm info --name=/dev/sdb1 --attribute-walk
Список літератури:
Ви можете використовувати udev
для запуску довільну команду. Щоб воно працювало, створіть правило /etc/udev/rules.d/
:
sudo nano /etc/udev/rules.d/my-usb-device.rules
І введіть:
ACTION=="add", ATTRS{idProduct}=="XXXX", ATTRS{idVendor}=="YYYY", RUN+="/location/of/my/command"
ПРИМІТКА: Значення XXXX
та YYYY
значення будуть взяті з lsusb
виводу.