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

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

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

실행을 시도했지만 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 코드 예제로 유용할 수 있습니다.

관련 정보