inotifywaitがバッテリ容量ファイルの修正を報告しないのはなぜですか?

inotifywaitがバッテリ容量ファイルの修正を報告しないのはなぜですか?

私はバッテリーの残量がいつ変わるかを知りたいと思い、単に5秒ごとにチェックするデーモンを実行したくありません。

実行しようとしましたが、inotifywait -m /sys/class/power_supply/BAT1/capacity修正が登録されていません。cat時々実行すると、別の結果が表示されます!実際に使用または実行したcatときにのみ何かを報告しますacpi。私はまた、inotifywaitBAT1ディレクトリ内の他のファイルに対して実行しようとしましたが、誰もファイルを変更しなかったことを発見しました。新しい結果が出ましたが、言葉ですcat

inotifywaitそれでは、修正を報告してみてはいかがでしょうか。 inotifyが利用できない場合は、バッテリー残量の変更に関する即時アップデートをどのように受け取ることができますか?

答え1

@rudibがコメントで述べたように、その中にあるものはすべて/sys仮想です。各ファイルの内容は、実際に読み取ると、対応するカーネルデータ構造から再生成されます。したがって、ファイルを作成して変更するという意味では変更はありません。

同じだ/proc

バッテリーステータス通知は次のように提供されます。一般的なNetlinkメッセージ、ファミリ名=、acpi_eventおよびマルチキャストグループ名acpi_mc_group。残念ながら、シェルスクリプトからNetlinkメッセージに簡単にアクセスできるツールはありませんが、pyroute2このツールはACPIイベントを含むnetlinkメッセージをデコードすることもでき、Pythonコードの例として役立ちます。

関連情報