電源ボタンが押されたときにスクリプトを実行する

電源ボタンが押されたときにスクリプトを実行する

電源ボタンを押したときに、スクリプトを実行したいと思います。このシナリオでは、file.sh とします。したがって、電源ボタンを押したときに、file.sh だけを実行したいと思います。

私が見つけた解決策のほとんどは を編集するものでした/etc/acpi/powerbtn.sh。しかし、そのファイルは私のシステムには存在しません。(Ubuntu 19.04 を実行しています) 作成して標準コンテンツで設定しようとしましたが、うまくいきませんでした。また、 を使用してキーの押下をリッスンしようとしましたacpi_listenが、キーを押しても何も起こらなかったため、やり方が間違っているのか、それとも他の原因があるのか​​わかりません。 を使用しようとしましたがxev、キー イベントは取得されましたが、電源ボタンを押しても何も登録されませんでした。

これを実現する方法、または私が何を間違っているのか知っている人はいますか?

追記:コマンドラインで実行できるソリューション、できればサードパーティのソフトウェアを使わないソリューションを希望します。よろしくお願いします。


同様の質問ですが、解決策はありません:

https://askubuntu.com/questions/473693/電源ボタンが押されたときにスクリプトを実行する

基本的に、ここで行ったことと同等の Linux を探しています:

https://stackoverflow.com/questions/12434863/windows-shutdown でバッチ スクリプトを実行する


編集: これは syslog から取得したものです:

Feb 9 13:01:01 joe-Aspire-E5-576G gnome-session-binary[1624]: Entering running state

そして、これはイベント内の私のファイルです:

event=button/power action=/home/ragnvaldr/Desktop/test/sc.sh `

答え1

あなたの質問への回答はのセクションですman acpid。お客様のニーズに合わせて対応いたします。

  • 次のような内容のrootファイル名のファイルを作成します。/etc/acpi/events/power
event=button/power
action=/usr/bin/logger "ACPI_POWER_BTTN_TEST: %e"
  • 次に を実行しますservice acpid restart

  • syslogファイルをこのように追跡する/usr/bin/tail -f /var/log/syslog

  • 電源ボタンを押すと、テスト メッセージが表示されますsyslog

  • action=ファイル内の行を適切に変更してpower、カスタム スクリプトを指すようにします。

トラブルシューティング:

  1. を再起動した後acpid、コマンドacpidを使用して が実際に実行されているかどうかを確認しますpidof acpid

  2. スクリプトは期待通りに動作しますか?スクリプト内のコマンドにはフルパス名を使用してください。ないの任意の値を想定しますPATH

  3. 上記の例では、コマンドを使用して/usr/bin/logger、簡単に何かをどこかに記録します ( )。あるいは、テスト目的で、/var/log/syslog以下のファイルに何かを書き込むこともできます。/tmp

  4. 一部のウィンドウ マネージャーは電源ボタンもキャプチャする可能性があると報告されています (@nathan より)。 に という/etc/systemd/logind.conf行を追加して、電源ボタンを無視するHandlePowerKey=ignoreようにすると役立つ場合があります。systemd-logind.service

答え2

基本的に、ここで行ったことと同等の Linux を探しています:https://stackoverflow.com/questions/12434863/windows-shutdown でバッチ スクリプトを実行する

もしこれをやりたいのであれば、システムがシャットダウン(または休止状態またはスリープ状態)したときにスクリプトを実行することができます。systemdインフラストラクチャー

関連情報