답변:
스토리지 장치는 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"
이제 모든 USB 저장 장치 추가 이벤트 에서 udev
트리거됩니다 my-usb-rule.service
(스크립트 실행) .
규칙 / 단위를 편집 한 후 구성을 다시로드하는 것을 잊지 마십시오.
udevadm control --reload
systemctl daemon-reload
SUBSYSTEM=="block", SUBSYSTEMS=="usb"
( S 와의 차이점에 유의하십시오 ). ENV{ID_BUS}=="usb"
scsi 값을 여기에서 볼 수 있기 때문에 항상 원래의 대답으로 작동 할 수 있는지 의심 스럽습니다 . 그러나 원래 요청한 것과 약간 다른 문제를 겪고 있습니다 .USB 스틱 (pendrive)을 원하지만 외부 드라이브는 없습니다.
ENV{ID_BUS}
모든 시스템에서 가치가 동일하지 않다는 것입니다. 어제 udev 210을 사용하는 구형 시스템에서 작업하고있었습니다 (인터넷에 있지 않기 때문에 지금 확인할 수 없습니다). 그 값은 scsi 입니다. 이제 udev 228이있는 최신 컴퓨터를 사용하고 있으며 값은 usb 입니다. 같은 USB 스틱을 가지고 다니고 있습니다. (여기서 udev 버전이 관련 요소인지 확실하지 않은 경우 udev 규칙을 설치하는 커널 또는 다른 패키지 일 수도 있습니다 SUBSYSTEM=="block", SUBSYSTEMS=="usb"
( 예 : udisks2)) 여전히 (주 S ) 휴대용이며 안전 할 수 있습니다.