Udev 규칙은 모든 USB 저장 장치와 일치합니다.

Udev 규칙은 모든 USB 저장 장치와 일치합니다.

udev특정 장치뿐만 아니라 연결된 모든 USB 대용량 저장 장치에 규칙을 적용하려면 어떻게 해야 합니까 ? idVendor그리고 무엇을 바꿔야합니까 idProduct?

 ACTION=="add", SUBSYSTEM=="usb", SYSFS{idVendor}=="0204", SYSFS{idProduct}=="6025",
     RUN+="/home/workspace/bash_script.sh"

답변1

저장 장치는 하위 시스템에 있으므로 규칙에 다음과 같은 항목을 추가 block해야 합니다 .SUBSYSTEM=="block"

ACTION=="add", KERNEL=="sd?", SUBSYSTEM=="block", ENV{ID_BUS}=="usb", \
    RUN+="/path/to/script"

사용하시면 USB 저장장치를 추가하실 때마다 systemd유닛을 실행할 수 있습니다 . systemd예를 들어 다음과 같은 단위 파일을 만듭니다 /etc/systemd/system/my-usb-rule.service.

[Service]
Type=oneshot
ExecStart=/path/to/script

그리고 다음과 같은 규칙 /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"

이제 udev모든 USB 저장 장치에서 트리거 됩니다 my-usb-rule.service(따라서 스크립트 실행).다음에 추가이벤트.


규칙/단위를 편집한 후 구성을 다시 로드하는 것을 잊지 마세요.

udevadm control --reload
systemctl daemon-reload

관련 정보