나는 배터리 잔량이 언제 변하는지 알고 싶고, 단순히 5초마다 확인하는 데몬을 실행하고 싶지 않습니다.
실행을 시도했지만 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 코드 예제로 유용할 수 있습니다.