システムをシャットダウンする代わりにカスタムスクリプトを実行するように、debian 10 systemdの下で電源ボタンのシャットダウンアクションをどのように変更しますか?
これがacpiによって処理されたときは、/ etc/acpi内のスクリプトを編集できました。これまでに見つけた唯一の提案は、さまざまな電源関連のバイナリをスクリプトに置き換えることです。
バイナリを置き換えずにこれを行う方法はありますか?
何をしたいかによります。
何らかの操作の実行中に電源を一時的にブロックする必要がある場合は、systemd-inhibit
を参照してください。このように、スリープ、サスペンドなどをブロックすることもできます。また、一時的に(プログラムが実行されている限り)systemdに電源ボタンを無視するように指示することもできます。これは、他のプログラムに代わりに動作させることを目的としています。
シャットダウンする前に追加のコードを実行するだけの場合は、poweroff.target
でサービスを開始できます。 shutdown.target
とreboot.target
を検討することもできます。 (電源ボタンの機能を完全に変更したい場合は、poweroff.target
を変更してsystemd-poweroff.service
を取得しないようにすることもできます。ただし、systemctl poweroff
やpoweroff
などに注意してください。それも通過します)。
Systemdによる電源ボタンの処理を完全に無効にしたい場合は、最初に、通常ログインする実際にログインしていることを知る必要があります。 /etc/systemd/logind.conf
のHandlePowerKey
オプションを使用すると、(ignore
に設定することで)無効にできます。その後、他のプログラムにキーをリッスンさせることができます。
私が本当に望んでいた解決策ではありませんが、これが私がやったことです:
設定
HandlePowerKey=ignore
/etc/systemd/logind.confでsystemdから電源キーの処理を削除します。
その後、他のキーと同じように電源ボタンを操作できます。
私の場合、keypressイベントを
/dev/input/by-path/platform-r_gpio_keys-event
この質問で説明されているように Linux入力デバイスからのキーへのアクセス
リンクされた質問のサンプルプログラムの変更バージョンを作成して、電源コード(キーコード116)を待ち、スクリプトを実行しました。