udev, 추가 규칙이 실행되는 것을 방지하는 방법은 무엇입니까?

udev, 추가 규칙이 실행되는 것을 방지하는 방법은 무엇입니까?

장치에서 추가 규칙 실행을 중지하도록 udev에 지시하는 것이 가능합니까(그렇다면 어떻게)?

udev 파일의 이름이 알파벳순으로 지정되는 일반적인 순서/시퀀스가 있다는 것을 알고 있습니다. 따라서 이전 규칙이 추가 실행을 방지하려는 것이 *.rules논리적인 것 같습니다 (즉, 나중에 발생하는 규칙의 순서대로).

udev를 통해 USB 메모리 미디어가 있고 해당 RUN+ 스크립트가 설치되었다고 가정해 보겠습니다. 이제 장치를 다시 설치하려고 시도하는(그리고 실패할 수도 있는) 시스템의 다른 규칙이 마음에 들지 않습니다!

답변을 용이하게 하기 위해 예를 하나 들겠습니다. 규칙을 다음과 같이 설정하겠습니다.

# 30.myusb.rules 파일에서
ACTION=="추가", SUBSYSTEM=="USB", ATTRS{idVendor}=="1f75", ATTRS{idProduct}=="0902", RUN+="/bin/mount.30.1f75.0902.sh"

이제 난 이걸 원해더 멀리(31 > 30부터) 규칙이 발생하지 않습니다.

# 31.myusb.rules 파일에서
ACTION=="추가", SUBSYSTEM=="USB", ATTRS{idVendor}=="1f75", ATTRS{idProduct}=="0902", RUN+="/bin/mount.31.1f75.0902.sh"

제조용 "필터"우데브두 가지 규칙이 적용되는지 알 수 있지만 31.myusb.rules 규칙이 발생하지 않기를 바랍니다.

30.myusb.rules그래서 의사코드가 제안하는 방식으로 조정할 수 있는 방법을 찾고 있어요.

# 30.myusb.rules 파일에서
ACTION=="추가", SUBSYSTEM=="USB", ATTRS{idVendor}=="1f75", ATTRS{idProduct}=="0902", RUN+="/bin/mount.30.1f75.0902.sh"
ACTION=="추가",SUBSYSTEM=="USB",ATTRS{idVendor}=="1f75",ATTRS{idProduct}=="0902",STOP_FURTHER_RULES_WITH_THIS_FILTER

답변1

GOTO규칙을 적용한 후 즉시 레이블로 이동하기 위해 규칙에서 사용할 수 있습니다 . 레이블이 규칙 끝에 있으면 모든 후속 규칙을 건너뜁니다.

그래서 30.myusb.rules:

ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="1f75", ATTRS{idProduct}=="0902", RUN+="/bin/mount.30.1f75.0902.sh", GOTO="myusb_end"

그리고 마지막에 31.myusb.rules:

LABEL="myusb_end"

또는 를 사용하여 마지막으로 로드된 파일( )을 GOTO="very_end"넣으십시오 .LABEL="very_end"/etc/udev/rules.d/zzzzzzzz.rules

답변2

당신은 사용해야합니다:=바꾸다+=.

# in file 30.myusb.rules
ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="1f75", ATTRS{idProduct}=="0902", RUN:="/bin/mount.30.1f75.0902.sh"

~에서남성페이지,

   "="
       Assign a value to a key. Keys that represent a list are reset and
       only this single value is assigned.

   "+="
       Add the value to a key that holds a list of entries.

   ":="
       Assign a value to a key finally; disallow any later changes.

관련 정보