systemdでスクリプトを実行するために電源ボタンの終了動作を変更する方法

systemdでスクリプトを実行するために電源ボタンの終了動作を変更する方法

システムをシャットダウンするのではなく、カスタムスクリプトを実行するようにdebian 10 systemdで電源ボタンのシャットダウン動作を変更する方法は?

この問題はacpiで処理されますが、/ etc / acpiでスクリプトを編集できます。これまで私が見つけた唯一の提案は、さまざまな電源関連バイナリを私のスクリプトに置き換えることです。

バイナリを交換せずにこれを行う方法はありますか?

答え1

それはあなたがしたいことに依存します。

  • 特定のジョブの実行中に一時的に停電を防ぐ必要がある場合にのみ、これを参照してくださいsystemd-inhibit。このように、スリープ、一時停止などを防ぐこともできます。また、一時的に(プログラムの実行中に)systemdに電源ボタンを無視するように指示することで、他のプログラムがそのボタンで機能するようにすることもできます。

  • 終了する前に追加のコードを実行したい場合は、サービスを開始できますpoweroff.targetshutdown.targetとを検討してくださいreboot.target。 (電源ボタンの機能を完全に変更したい場合は、引っ張らないようにpoweroff.target変更してください。)systemd-poweroff.servicesystemctl poweroffpoweroff

  • systemdの電源ボタン処理を完全に無効にするには、まず通常のログインなど、実際にログインしているかどうかを知る必要があります。HandlePowerKeyのオプションで/etc/systemd/logind.conf無効にすることができます(に設定ignore)。その後、他のプログラムからキーストロークを受け取ることができます。

答え2

これは私が望んだ解決策ではありませんでしたが、最終的に私がしたことは次のとおりです。

環境

HandlePowerKey=ignore

/etc/systemd/logind.conf は、systemd から電源キー処理を削除します。

その後、電源ボタンを他のキーと同じように処理できます。

私の場合は、次のキーを押すイベントを取得できます。

/dev/input/by-path/platform-r_gpio_keys-event

この質問で説明されているようにLinux入力デバイスのアクセスキー

電源キー(キーコード116)を待ってから、スクリプトを実行するためにリンクされた質問にサンプルプログラムの修正版を作成しました。

関連情報