為什麼 inotifywait 不報告電池容量文件所做的修改?

為什麼 inotifywait 不報告電池容量文件所做的修改?

我想知道我的電池電量何時發生變化,我不想簡單地運行一個每五秒鐘檢查一次的守護程序。

我嘗試過運行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。不幸的是,我不知道有什麼工具可以輕鬆存取 shell 腳本的 Netlink 訊息,但顯然pyroute2該工具還可以解碼包含 ACPI 事件的 netlink 訊息,因此它可能作為 Python 程式碼範例很有用。

相關內容