udev 실행 명령이 실행되지 않습니다.

udev 실행 명령이 실행되지 않습니다.

USB로 휴대폰을 연결할 때 컴퓨터 잠금을 해제하기 위한 udev 규칙을 만들려고 합니다. 해당 규칙이 실행되고 있다는 것을 찾을 수 없었기 때문에 훨씬 더 간단한 규칙을 시도했습니다. 다음은 규칙입니다(익명화됨).

KERNEL=="sd?1", ATTRS{idVendor}=="****", ATTRS{idProduct}=="****", SYMLINK+="phone", RUN+="touch /home/user/udev.touch"

링크 phone -> sdc1는 생성되지만 파일은 생성되지 않기 때문에 규칙이 실행되고 있는 것으로 알고 있습니다. 파일이 외부 프로그램을 실행하기 위해 활성화해야 하는 보안 설정이 있습니까?

답변1

man udev( ) 때문에 RUN 키에 전체 경로를 사용해야 합니다.

절대 경로가 제공되지 않으면 프로그램은 /lib/udev에 있을 것으로 예상됩니다. 그렇지 않으면 절대 경로를 지정해야 합니다. 프로그램 이름과 인수는 공백으로 구분됩니다. 작은따옴표를 사용하여 공백이 포함된 인수를 지정할 수 있습니다.

그럼에도 불구하고 (bash) 스크립트 자체는 정상적으로 작동해야 합니다. 즉, 경로를 지정할 필요가 없습니다.

답변2

나는 udev와 같은 문제를 겪고있었습니다. 장치를 추가하고 제거할 때 스크립트가 작동하도록 하기 위해 거의 모든 것을 시도했습니다.

제가 만든 코드는 다음과 같습니다.

ACTION=="add", KERNEL=="sda1", SUBSYSTEMS=="scsi", ATTRS{model}=="AVV207-0        ", SYMLINK+="Lacie", MODE="0666", RUN+="/bin/sh /usr/bin/udev/lacie-add.sh", OPTIONS="last_rule"
ACTION=="remove", KERNEL=="sda1", RUN+="/bin/sh /usr/bin/udev/lacie-del.sh", OPTIONS="last_rule"

매개변수 를 추가하면 OPTIONS="last_rule"성공했습니다.

답변3

나 역시 이 문제를 겪었고, 12.04부터 RUN 명령이 작동하려면 전체 bash경로와 전체 스크립트를 지정해야 한다는 것을 확인할 수 있습니다.bash

관련 정보