¿Por qué inotifywait no informa las modificaciones realizadas en el archivo de capacidad de la batería?

¿Por qué inotifywait no informa las modificaciones realizadas en el archivo de capacidad de la batería?

Quiero saber cuándo cambia la carga de mi batería y no quiero simplemente ejecutar un demonio que lo verifique cada cinco segundos.

Intenté ejecutar inotifywait -m /sys/class/power_supply/BAT1/capacity, pero no registra ninguna modificación, aunque cathacerlo de vez en cuando da resultados diferentes. De hecho, solo informa algo cuando catlo usé o ejecuté acpi. También intenté ejecutar inotifywaitotros archivos en el directorio BAT1 y descubrí que no se han visto modificaciones en ninguno, a pesar de dar nuevos resultados con cat.

Entonces ¿por qué no inotifywaitreporta modificaciones? ¿Y cómo puedo obtener actualizaciones instantáneas sobre los cambios en el nivel de la batería si no puedo usar inotify?

Respuesta1

Como dijo @rudib en los comentarios, todo /syses virtual: el contenido de cada archivo se crea nuevo a partir de la estructura de datos del kernel correspondiente cada vez que se lee. Por lo tanto, no hay modificaciones en el sentido de que algo se escriba en el archivo para cambiarlo.

Lo mismo va para /proc.

Las notificaciones del estado de la batería están disponibles comomensajes genéricos de Netlink, con apellido = acpi_eventy nombre del grupo de multidifusión acpi_mc_group. Desafortunadamente, no conozco una herramienta que brinde fácil acceso a los mensajes de Netlink para scripts de shell, pero aparentementepyroute2La herramienta también puede decodificar mensajes de enlace de red que contienen eventos ACPI, por lo que podría resultar útil como ejemplo de código Python.

información relacionada