답변:
일반적인 용도로, 모든 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
출력.