私はヘッドフォンの切断時にスクリプトを実行したいのですが、変更されたときにすでに実行されているコードがあるときに、ステータスの constant polling の考えに腹を立てています。
すべてではないにしてもほとんどのシステムで、ACPIはこのイベントを処理できます。それをテストするには:
acpi_listen
を実行しますヘッドフォンの取り外しと再接続、出力例:(マイク/耳はラップトップの同じジャックで共有)
jack/headphone HEADPHONE unplug
jack/microphone MICROPHONE unplug
jack/headphone HEADPHONE plug
jack/microphone MICROPHONE plug
your-script.sh
を/etc/acpi/
に入れる
/etc/acpi/events/
にスクリプトのイベントトリガーファイルを追加します
event=jack/headphone HEADPHONE unplug
action=/etc/acpi/your-script.sh
そこから他のファイルを確認してください。
/etc/acpi/events/
で変更されたルールを再ロードするには、acpid
サービスを再起動する必要がある場合があります
Sudo service acpid restart
参照:man acpid
現在のバージョンのスクリプトには、sleep 0.25
コマンドが含まれています。
sleep
はタイマーベースであるため、スリープ中にany処理サイクルを使用しません…
非常に小さなCPUを使用してタイマーを設定しますが、sleep 1
(1秒間スリープ)、sleep 60
(1分間スリープ)、sleep 86400
(1日間スリープ)すべて同じ数のCPUサイクルを使用します。
ACPIを使用 ただし、ACPIはポーリング駆動型ではなくイベント駆動型であるため、perfectソリューションです。