OS Lite가 설치된 Raspberry Pi 4와 일부 디스크 드라이브가 USB 포트에 연결되어 있습니다. 또한 드라이브가 대기 모드에 들어가고 나올 때 실행하고 싶은 Python 스크립트도 있습니다. "/etc/udev/rules.d"에 "99-hdd-standby.rules"라는 파일을 만들고 그 안에 다음 내용을 추가했습니다.
ACTION=="change", DEVNAME=="*/sd[a-z]", ATTR{state}=="active/idle", RUN+="/usr/bin/python3 /home/marus/hdd_power.py act %k"
ACTION=="change", DEVNAME=="*/sd[a-z]", ATTR{state}=="standby", RUN+="/usr/bin/python3 /home/marus/hdd_power.py stb %k"
파일을 저장하고 udev 서비스를 다시 시작했습니다. 하지만 하드 디스크가 대기 상태가 되어 존재하면 Python 스크립트가 실행되지 않습니다. 스크립트에 오류가 없습니다. 수동으로 실행하면 알림을 받습니다.
그런 다음 이 간단한 규칙을 사용해 이것이 작동하는지 확인했습니다.
ACTION=="change", SUBSYSTEM=="usb", RUN+="/bin/echo 'USB device state changed' >> /home/marus/udev_log.txt"
USB 장치가 연결되거나 연결 해제되면 파일에 써야 합니다. 하지만 역시 효과가 없었어...
트리거할 규칙을 만들 수 없습니다. 무슨 일이 일어나고 있나요?
고쳐 쓰다:
나는 이 규칙을 시도해 보았습니다.
SUBSYSTEM=="block", ACTION=="add", RUN+="/usr/local/bin/trigger.sh"
...사실 하드 드라이브를 연결하거나 연결을 끊을 때 스크립트가 실행됩니다. 이것 역시 확인되었습니다 udevadm monitor
. 그러나 드라이브를 대기 모드로 전환하면 udevadm 모니터에서 이벤트가 발생하지 않습니다. 따라서 드라이브가 대기 모드로 들어갈 때 udev를 사용하여 알림을 받는 것이 가능하지 않다고 생각합니다.
다른 아이디어가 있으면 알려주시기 바랍니다.