ENV 및 ATTR/ATTRS

ENV 및 ATTR/ATTRS

USB를 Raspberry Pi에 자동 마운트하려고 하는데 udev 규칙이 작동하지 않는 것 같습니다.

내가 사용하는 코드는 다음과 같습니다

ACTION=="add", ENV{ID_MODEL}=="Flash_Drive", RUN+="bin/mkdir /home/pi/heyimhere"

플래시 드라이브를 삽입하면 해당 위치에 디렉터리가 생성되지 않기 때문에 작동하지 않습니다.

동일한 규칙을 사용하여 USB를 사용하여 끄는 데 행운이 있었습니다. 이번에는 다음 줄을 사용하여 끄십시오.

ACTION=="remove", ENV{ID_MODEL}=="Flash_Drive", RUN+="sbin/shutdown -h now"

작동합니다. USB를 분리하자마자 꺼집니다.

왜? ATTR을 사용하여 추가해야 합니까?

답변1

ENV 및 ATTR/ATTRS

ATTR{파일 이름}
  이벤트 장치의 sysfs 속성 값과 일치합니다.

ATTRS{파일 이름}
  sysfs 속성 값이 일치하는 장치의 devpath를 검색합니다.여러 ATTRS 일치 항목이 지정된 경우 모든 항목이 동일한 장치에서 일치해야 합니다.

ENV{키}
  장치 속성 값과 일치합니다.

ENV둘 다 동일한 정보를 포함하는 경우 ATTR차이 없이 둘 중 하나를 사용할 수 있습니다.

ENV관련 장치의 에는 다른 상위 장치에서 파생된 값이 포함될 수 있습니다. 따라서 ENVs를 사용하면 여러 상위 장치의 값을 동시에 일치시킬 수 있는 경우가 있는데 이는 불가능합니다 ATTRS.


디렉터리 생성 규칙

절대 경로를 사용해야 합니다.RUN키( RUN+="/bin/mkdir /home/pi/heyimhere"귀하의 예에서는):

절대 경로가 제공되지 않으면 프로그램은 /usr/lib/udev에 위치할 것으로 예상됩니다.절대 경로를 지정해야 합니다..

그런데, 귀하의 마감 규칙이 왜 작동하는지 모르겠습니다. sbin/shutdown납이 없기 때문에 그렇게 해서는 안 됩니다 /.


udev 규칙에서 마운트

제이슨 린처럼언급하다,자동 마운트에는 udev를 사용할 수 없습니다:

액세스 네트워크를 실행 중이거나udev 규칙 내에서는 파일 시스템 마운트/마운트 해제가 허용되지 않습니다., systemd-udevd.service에 시행되는 기본 샌드박스로 인해.

관련 정보