Por que o inotifywait não relata modificações feitas no arquivo de capacidade da bateria?

Por que o inotifywait não relata modificações feitas no arquivo de capacidade da bateria?

Quero saber quando a carga da minha bateria muda e não quero simplesmente executar um daemon que a verifique a cada cinco segundos.

Eu tentei executar inotifywait -m /sys/class/power_supply/BAT1/capacity, mas ele não registra nenhuma modificação, embora cat- executá-lo de vez em quando dê resultados diferentes! Na verdade, ele só reporta algo quando eu uso catnele, ou executo o acpi. Também tentei executar inotifywaitoutros arquivos no diretório BAT1 e descobri que nenhum foi visto com modificações - apesar de fornecer novos resultados com cat.

Então, por que não inotifywaitrelata modificações? E como posso obter atualizações instantâneas sobre alterações no nível da bateria se não consigo usar o inotify?

Responder1

Como @rudib disse nos comentários, tudo /sysé virtual: o conteúdo de cada arquivo é criado a partir da estrutura de dados do kernel correspondente sempre que está sendo lido. Portanto, não há modificações no sentido de algo ser escrito no arquivo para alterá-lo.

O mesmo vale para /proc.

As notificações de status da bateria estão disponíveis comomensagens genéricas do Netlink, com family name = acpi_evente multicast group name acpi_mc_group. Infelizmente não conheço uma ferramenta que dê acesso fácil às mensagens do Netlink para scripts de shell, mas aparentemente opyroute2A ferramenta também pode decodificar mensagens netlink que contêm eventos ACPI, portanto, pode ser útil como exemplo de código Python.

informação relacionada