나는 배터리 충전량이 언제 변하는지 알고 싶고 단순히 5초마다 확인하는 데몬을 실행하고 싶지 않습니다.
나는 running 을 시도했지만 가끔씩 -ing하면 다른 결과가 나오 inotifywait -m /sys/class/power_supply/BAT1/capacity
더라도 수정 사항이 등록되지 않습니다 ! cat
사실, 내가 사용 cat
하거나 실행할 때만 무언가를 보고합니다 acpi
. 또한 inotifywait
BAT1 디렉토리의 다른 파일에 대해 실행을 시도한 결과 cat
.
그렇다면 왜 수정 사항을 보고하지 않습니까 inotifywait
? Inotify를 사용할 수 없는 경우 배터리 잔량 변화에 대한 즉각적인 업데이트를 어떻게 받을 수 있나요?
답변1
@rudib이 의견에서 말했듯이, 그 안에 있는 모든 것은 /sys
가상입니다. 각 파일의 내용은 실제로 읽을 때마다 해당 커널 데이터 구조에서 새로 생성됩니다. 따라서 파일을 변경하기 위해 파일에 무언가를 쓴다는 의미에서는 수정이 없습니다.
./proc
배터리 상태 알림은 다음과 같이 제공됩니다.일반 Netlink 메시지, 성 = acpi_event
및 멀티캐스트 그룹 이름 acpi_mc_group
. 불행히도 저는 쉘 스크립트의 Netlink 메시지에 쉽게 액세스할 수 있는 도구를 모릅니다.pyroute2
도구는 ACPI 이벤트가 포함된 netlink 메시지를 디코딩할 수도 있으므로 Python 코드 예제로 유용할 수 있습니다.