태그 보관물: usb

usb

USB 장치 플러그인에서 사용자 지정 스크립트를 실행하는 방법은 무엇입니까? 사용자 지정 스크립트를 자동으로

Debian / CentOS / Fedora와 같은 현재 Linux 배포 환경에서 USB 장치 플러그인에서 사용자 지정 스크립트를 자동으로 실행하는 최첨단 방법은 무엇입니까?

예를 들어, UUID (또는 장치 ID 등)를 기반으로 일부 파일을 자동으로 마운트 / 복사하거나 USB 대용량 저장 장치를 마운트 해제하려는 경우.



답변

파일에 /etc/udev/rules.d다음 과 같은 줄을 넣으십시오 .

KERNEL=="sd*", ATTRS{vendor}=="Yoyodyne", ATTRS{model}=="XYZ42", ATTRS{serial}=="123465789", RUN+="/pathto/script"

NAME="subdir/mydisk%n"아래에 사용자 정의 입력 경로를 사용하려는 경우 와 같은 절을 추가하십시오 /dev.

실행할 udevadm info -a -n sdb수있는 속성을 확인하려면 실행 하십시오 ( attribute=="value"; 플러그 할 때 sdb작성된 새 항목에 따라 디스크에 자동으로 할당 된 장치 이름으로 대체 /dev). 하나의 스탠자 ATTRS에서 절을 사용할 수 있습니다 . 모든 스탠자를 선택할 수 있지만 절은 모두 동일한 스탠자에서 가져와야하므로 혼합하여 일치시킬 수 없습니다. 다른 스탠자에 나열된 다른 유형의 절과 절을 혼합 할 수 있습니다 .ATTRSATTRS


답변

/lib/udev/rules.d디스크 관련 규칙의 예를 살펴 보았습니다 . Ubuntu 시스템에서 하나의 규칙 파일은 ID_FS_UUID_ENC자체 규칙 파일에서 사용할 수 있는 환경 변수 를 제공 합니다.

따라서 사용자 지정 규칙 파일을에 배치했습니다 /etc/udev/rules.d/foodevice.rules. 숫자가 앞에 붙지 않기 때문에 마침내 udev에 의해 실행됩니다. Btw에서 udev 데몬은 /etc/udev/rules.d파일 변경시 다시 시작할 필요가없는 변경 사항을 감시 했습니다.

내용 /etc/udev/rules.d/foodevice.rules은 :

ACTION=="add", KERNEL=="sd*[!0-9]", ENV{ID_FS_UUID_ENC}=="FFFF-AAAF",
  RUN+="/usr/bin/sudo -u juser /home/juser/path/script.sh"

(이것은 하나의 규칙입니다-udev에는 줄 연속 메커니즘이 없기 때문에 ENV 절 뒤에 줄 바꿈을 제거해야합니다)

udev로 시작한 프로그램은 데몬을 차단하므로 오랫동안 실행하지 않아야합니다. 나는 그것을 통해 at, 즉 실제 작업을 수행하는 프로세스에서 분리 하여 해결했습니다 .

$ cat /home/juser/path/script.sh
#!/bin/sh
echo ~/path/mountcopystuff.sh | at now


답변