최근에 나는 ENV{REMOVE_CMD}
AND가 모두 필요한 상황에서 match를 사용할 필요가 없는 이 변수를 발견했습니다. udev 규칙에 설정할 수 있는 다른 유용한 변수에 대한 정보를 찾으려고 노력했지만 불행히도 가치 있는 것을 찾을 수 없었습니다.ACTION=="remove"
add
remove
ENV
모든 변수 목록을 어디서 찾을 수 있는지 아는 사람이 있나요 ?
답변1
ENV
변수는 매우 자유로운 형식인 것 같습니다 .장치에 바인딩. 적용되는 유일한 제한은 이러한 키 중 어느 것도 사용할 수 없다는 것입니다.사용:작업,하위 시스템,DEVTYPE,주요,부,드라이버,IFINDEX,DEVNAME,DEVLINKS,DEVPATH,레이블.
그 외에도 환경 변수의 해석은 다른 규칙과 절차에 달려 있습니다. grep -rni 'ENV{' /{lib,etc}/udev/rules.d
환경 변수의 소비자와 공급자를 찾는 데 사용됩니다 . 특정 REMOVE_CMD
경우에는 이 파일이 /lib/udev/rules.d/50-udev-default.rules
이를 처리합니다.
# run a command on remove events
ACTION=="remove", ENV{REMOVE_CMD}!="", RUN+="$env{REMOVE_CMD}"
ACTION=="remove", GOTO="default_end"
다음 명령을 사용하면 더 많은 환경 변수를 찾을 수 있습니다.
grep -hrPo 'ENV{\K[^}]*(?=}=[^=])' /{etc,lib}/udev/rules.d | sort -u
예를 들어, 이 95-upower-hid.rules
파일을 고려해보세요. 이 파일은 UPOWER_BATTERY_TYPE
변수를 설정합니다. 다른 규칙에서는 이 파일을 사용하지 않지만뛰어난 성능데몬은 이벤트를 추가/변경/제거하기 위해 udevd에 등록합니다. 그런 다음 이벤트가 발생하면 UPower는 장치에 이 변수를 구체적으로 쿼리하여 일반 마우스, UPS 또는 Unifying 수신기 장치로 처리해야 하는지 결정합니다.
또 다른 (더 유용한) 예는 UDISKS_IGNORE
드라이브 목록에서 장치를 숨기도록 그래픽 파일 브라우저를 프롬프트하는 데 사용할 수 있는 환경 변수입니다. 특히 udisks2의 경우 다음에서 변수를 찾을 수 있습니다.USB(8)맨 페이지(이 페이지를 찾는 데 사용 man -K UDISKS_IGNORE
)