
當我按下電源按鈕時,我想執行一個腳本。對於這種情況,假設為 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
以指向您的自訂腳本。
故障排除:
重啟後,使用指令
acpid
檢查是否實際運作。acpid
pidof acpid
您的腳本是否按預期工作?在腳本中使用命令的完整路徑名。做不是假設 的任意值
PATH
。在上面的範例中,我使用命令
/usr/bin/logger
作為在某處記錄某些內容的簡單方法(/var/log/syslog
)。或者,您可以將一些內容寫入下面的文件中/tmp
以進行測試。據報道(@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
基礎設施。