web-dev-qa-db-ja.com

acpid-プラグを抜くと休止状態

私はLinux(特にlubuntu)のプログラミングに不慣れで、古くて捨てられたラップトップを思い通りに稼働させるプロジェクトに取り組んでいます。 acpiとacpidをインストールしましたが、acpiコマンドを実行すると、ラップトップが接続されている(充電中)か、接続されていない(放電中)かが通知されます。

ラップトップが放電しているときに、ラップトップを自動的に休止状態にしたいのですが。私の最初の考えは、30秒ごとにacpiをポーリングし、「放電」という単語で応答するたびに休止状態のコマンドを実行するスクリプトを作成することでした。ただし、acpidはイベント駆動型であるため、使用するのに適したツールであることを理解しています。プラグを抜いたときにラップトップを休止状態にするための資料が見つからないようです-アドバイスはありますか?

1
Jake

acpidデーモンは、ACPIサブシステムによってバッテリーイベントを受信する必要があります。ラップトップのプラグを抜く/差し込むと、関連するバッテリーイベントが発生するはずです。イベントは、システムの電源オフ/サスペンド/休止状態などのアクションに関連付けることができます。

まず、ラップトップのプラグを抜くときに/var/log/messagesまたは関連するログファイルを見て確認してみてください。次のようなものがあるはずです

... ACPI action undefined: ...

何もない場合は、acpidに接続してイベントをリッスンするacpi_listenコマンドを試すことができます。

次に、バッテリーイベント用に/etc/acpi/eventsディレクトリの下に汎用イベントハンドラーを構成できます。そこにファイルを作成します。 battery.conf次の内容:

event=battery.*
action=/etc/acpi/actions/battery.sh

バッテリーイベントはスクリプトbattery.shで処理する必要があると書かれています。このスクリプトでは、/proc/acpi/battery/*/stateファイルから入手できるバッテリーの状態を監視します。特に、「充電状態」の行を確認してください。これは「放電」に変わります。 -)ラップトップのプラグを抜いたとき、または "充電中/充電済み"ラップトップを再び接続したとき。

この情報に基づいて、イベントハンドラーbattery.shからhibernateコマンドを実行できます。さらに、他のいくつかの有用な例を見つけることができます。 on github

1
dsmsk80