장치에서 추가 규칙 실행을 중지하도록 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.