按下電源按鈕時執行腳本

按下電源按鈕時執行腳本

當我按下電源按鈕時,我想執行一個腳本。對於這種情況,假設為 file.sh。因此,當我按下電源按鈕時,我想運行 file.sh 並且僅執行 file.sh。

我發現的大多數解決方案都涉及編輯/etc/acpi/powerbtn.sh,但該文件在我的系統上不存在。 (我正在運行 Ubuntu 19.04)我嘗試創建它並用標準內容填充它,但它不起作用。我也嘗試用 監聽按鍵acpi_listen,但是當我按下按鍵時沒有任何反應,所以我不知道我是否做錯了或者是什麼。我嘗試使用xev,它確實捕獲了關鍵事件,但當我按下電源按鈕時沒有任何記錄。

有人知道如何實現這一點,或者我做錯了什麼?

PS 我應該提到,我更喜歡一種可以在命令列上完成的解決方案,最好是沒有任何第三方軟體的解決方案。謝謝。


類似的問題,但沒有解決方案:

https://askubuntu.com/questions/473693/run-a-script-when-power-button-is-pushed

基本上尋找與他們在這裡所做的等效的 Linux:

https://stackoverflow.com/questions/12434863/executing-a-batch-script-on-windows-shutdown


編輯:這是我從系統日誌中得到的:

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檢查是否實際運作。acpidpidof 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/executing-a-batch-script-on-windows-shutdown

如果這是您想要做的,那麼您可以使用以下命令在系統關閉(或休眠或進入睡眠狀態)時執行腳本systemd基礎設施

相關內容