inotifywait가 배터리 용량 파일에 대한 수정 사항을 보고하지 않는 이유는 무엇입니까?

inotifywait가 배터리 용량 파일에 대한 수정 사항을 보고하지 않는 이유는 무엇입니까?

나는 배터리 충전량이 언제 변하는지 알고 싶고 단순히 5초마다 확인하는 데몬을 실행하고 싶지 않습니다.

나는 running 을 시도했지만 가끔씩 -ing하면 다른 결과가 나오 inotifywait -m /sys/class/power_supply/BAT1/capacity더라도 수정 사항이 등록되지 않습니다 ! cat사실, 내가 사용 cat하거나 실행할 때만 무언가를 보고합니다 acpi. 또한 inotifywaitBAT1 디렉토리의 다른 파일에 대해 실행을 시도한 결과 cat.

그렇다면 왜 수정 사항을 보고하지 않습니까 inotifywait? Inotify를 사용할 수 없는 경우 배터리 잔량 변화에 대한 즉각적인 업데이트를 어떻게 받을 수 있나요?

답변1

@rudib이 의견에서 말했듯이, 그 안에 있는 모든 것은 /sys가상입니다. 각 파일의 내용은 실제로 읽을 때마다 해당 커널 데이터 구조에서 새로 생성됩니다. 따라서 파일을 변경하기 위해 파일에 무언가를 쓴다는 의미에서는 수정이 없습니다.

./proc

배터리 상태 알림은 다음과 같이 제공됩니다.일반 Netlink 메시지, 성 = acpi_event및 멀티캐스트 그룹 이름 acpi_mc_group. 불행히도 저는 쉘 스크립트의 Netlink 메시지에 쉽게 액세스할 수 있는 도구를 모릅니다.pyroute2도구는 ACPI 이벤트가 포함된 netlink 메시지를 디코딩할 수도 있으므로 Python 코드 예제로 유용할 수 있습니다.

관련 정보