Udev 규칙이 실행되지 않음

Udev 규칙이 실행되지 않음

저는 OpenSuse Leap에서 Udev 규칙을 사용하고 있으며 USB 장치가 시스템에 연결되어 있을 때 간단한 작은 스크립트를 실행하려고 합니다.

그런데 "RUN+=" 키워드에 추가한 스크립트가 실행되지 않습니다.

단계는 다음과 같습니다.

1) 나는 규칙을 썼다"10_MY_RULES.규칙"제공된 정보를 바탕으로우드바뎀 정보.

KERNEL=="sdf1", SUBSYSTEM=="block", SUBSYSTEMS=="usb", ATTRS{product}=="Flash Drive", ATTRS{manufacturer}=="Samsung",ATTRS{idProduct}=="1000", ATTRS{idVendor}=="090C", RUN="/home/user/bin/script.sh"

내 스크립트"스크립트 파일"다음과 같이:

#!/bin/bash; mkdir /home/user/Desktop/CREATE_FOLDER_TEST

2) OpenSuse Leap은 udev 규칙을 여러 위치에 배포합니다.

위치는 다음과 같습니다.

  • /etc/udev/rules.d
  • /usr/lib/udev/rules.d
  • /run/udev/rules.d

나는 "에 내 규칙을 씁니다./run/udev/rules.d"USB 장치를 연결할 때를 고려하면우데브액세스 파일은 다음 위치에 생성됩니다./달리기.

3) 다음 명령을 실행합니다.

  • udevadm 제어--규칙 다시 로드
  • udevadm 트리거

4) 완료되면 "udevadm 모니터” 주변 장치(이 경우에는 USB)가 연결되었을 때 내 시스템이 무엇을 하는지 확인합니다.

5) 내 플래시 드라이브가 시스템에 추가되었을 때 아무 작업도 수행되지 않고 내 스크립트가 실행되지 않는 것을 발견했습니다. 그래서 다음 명령을 실행하여 특정 장치에서 규칙을 트리거합니다.

  • udevadm test --action=/path/to/device 추가

그림의 마지막 줄에서 볼 수 있듯이 내 규칙을 읽고 있는 것을 보았습니다...

여기에 이미지 설명을 입력하세요.

운이 좋지 않아서 규칙을 변경하고 변경했습니다. 더 추가해요커널, 하위 시스템, 속성 등

위의 모든 항목은 두 모드 모두에서 실행됩니다.뿌리그리고사용자.

답변1

수동으로 시도해 보셨나요 script.sh?

나는 시도하고 얻었다

bash: ./script.sh: /bin/bash;: bad interpreter: No such file or directory

#!스크립트 줄에서는 명령 구분 기호로 세미콜론을 사용할 수 없습니다. 이 줄은 스크립트 인터프리터와 가능한 옵션을 지정하는 데에만 사용됩니다.

실제로, script.shudev 규칙을 시행하지 않았기 때문에 규칙이 실패한 것 같습니다. @eblock이 언급했듯이 필요한 최소한의 검사 수를 사용해야 합니다. 규칙이 작동하지 않으면 검사를 더 추가하는 대신 일부 검사를 제거해야 합니다.

또한 /runtmpfs 파일 시스템(= 기본적으로 RAM 디스크)에 있으므로 지속성이 없다는 점에 유의하세요. 여기에 넣은 모든 내용은 다음 재부팅 후에는 사라집니다. 따라서 /run/udev/rules.d다른 규칙이나 다른 자동화에 의해 생성된 자동 생성 규칙에만 사용해야 합니다.

/usr/lib/udev/rules.d배포에 대한 표준 규칙입니다. 시스템 관리자는 /etc/udev/rules.d필요에 따라 표준 규칙을 보완하거나 재정의해야 합니다.

관련 정보