
Debian/CentOS/Fedora와 같은 현재 Linux 배포판에서 USB 장치 플러그인을 통해 사용자 정의 스크립트를 자동화하는 최첨단 방법은 무엇입니까?
예를 들어 UUID(또는 장치 ID 등)를 기반으로 USB 대용량 저장 장치를 자동으로 마운트/복사/마운트 해제하려는 경우입니다.
답변1
다음 파일에 이와 같은 줄을 넣으십시오 /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
하나스탠자: 임의의 스탠자를 선택할 수 있지만, ATTRS
절은 모두 동일한 스탠자에 속해야 하며 혼합하여 일치시킬 수 없습니다. ATTRS
여러 섹션에 나열된 다른 유형의 조항과 조항을 혼합 할 수 있습니다 .
답변2
/lib/udev/rules.d
디스크 관련 규칙의 예를 찾아보았습니다 . Ubuntu 시스템에서 규칙 파일은 ID_FS_UUID_ENC
자체 규칙 파일에서 사용할 수 있는 환경 변수를 제공합니다.
그래서 사용자 정의 규칙 파일을 /etc/udev/rules.d/foodevice.rules
. 그런데 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/to/mountcopystuff.sh | at now