Urządzenie pamięci masowej znajduje się w block
podsystemie, więc SUBSYSTEM=="block"
w regule będzie potrzebne :
ACTION=="add", KERNEL=="sd?", SUBSYSTEM=="block", ENV{ID_BUS}=="usb", \
RUN+="/path/to/script"
Jeśli używasz systemd
, możesz uruchomić systemd
urządzenie za każdym razem, gdy dodawane jest urządzenie pamięci USB. Utwórz plik jednostki, np . /etc/systemd/system/my-usb-rule.service
:
[Service]
Type=oneshot
ExecStart=/path/to/script
i reguła, np . /etc/udev/rules.d/85-my-usb-rule.rules
:
ACTION=="add", KERNEL=="sd?", SUBSYSTEM=="block", ENV{ID_BUS}=="usb", \
ENV{SYSTEMD_WANTS}="my-usb-rule.service"
Teraz udev
uruchomi się my-usb-rule.service
(co z kolei wykona skrypt) na dowolnym zdarzeniu dodania urządzenia pamięci masowej USB .
Nie zapomnij ponownie załadować konfiguracji po edycji zasad / jednostek:
udevadm control --reload
systemctl daemon-reload
SUBSYSTEM=="block", SUBSYSTEMS=="usb"
(zauważ różnicę z S ). Wątpię, aby zawsze działałoENV{ID_BUS}=="usb"
w oryginalnej odpowiedzi, ponieważ widzę tutaj wartość scsi. Ale pracuję nad nieco innym problemem niż pierwotnie pytano, chcę mieć pamięć USB (pendrive), ale żadnych dysków zewnętrznych.ENV{ID_BUS}
wartość nie jest taka sama we wszystkich systemach. Wczoraj pracowałem na starszym systemie z udev 210 (chyba. Nie mogę teraz sprawdzić, ponieważ maszyna nie jest w Internecie), tam była wartość scsi . Teraz jestem na nowszej maszynie z udev 228, a wartość to usb . W przypadku tej samej pamięci USB noszę ją ze sobą. (nie jestem pewien, czy odpowiednia jest tutaj wersja udev, może to być także jądro lub inny pakiet instalujący reguły udev, np. udisks2). NadalSUBSYSTEM=="block", SUBSYSTEMS=="usb"
(uwaga S ) może być przenośny i bezpieczny.