システムをシャットダウンするのではなく、カスタムスクリプトを実行するようにdebian 10 systemdで電源ボタンのシャットダウン動作を変更する方法は?
この問題はacpiで処理されますが、/ etc / acpiでスクリプトを編集できます。これまで私が見つけた唯一の提案は、さまざまな電源関連バイナリを私のスクリプトに置き換えることです。
バイナリを交換せずにこれを行う方法はありますか?
答え1
それはあなたがしたいことに依存します。
特定のジョブの実行中に一時的に停電を防ぐ必要がある場合にのみ、これを参照してください
systemd-inhibit
。このように、スリープ、一時停止などを防ぐこともできます。また、一時的に(プログラムの実行中に)systemdに電源ボタンを無視するように指示することで、他のプログラムがそのボタンで機能するようにすることもできます。終了する前に追加のコードを実行したい場合は、サービスを開始できます
poweroff.target
。shutdown.target
とを検討してくださいreboot.target
。 (電源ボタンの機能を完全に変更したい場合は、引っ張らないようにpoweroff.target
変更してください。)systemd-poweroff.service
systemctl poweroff
poweroff
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)を待ってから、スクリプトを実行するためにリンクされた質問にサンプルプログラムの修正版を作成しました。