Linux
與快速按下相比,長按電源按鈕關機的機制是什麼?
可以使用 logind.conf 中的“HandlePowerKey”選項控制電源按鈕的行為。這設置為“暫停”。只需輕按電源按鈕即可按預期工作,暫停作業系統。但是,長時間按住該按鈕似乎會覆蓋它並關閉電腦。這是怎麼發生的?
我問的原因是 /lib/systemd/system-sleep 中的腳本似乎在長時間保持電源時無法正確執行。
這裡有兩件事在起作用。
首先,正如斯蒂芬建議的那樣,主機板的韌體處理來自按鈕的信號。根據您按下按鈕的時間長短,韌體將決定做什麼。
然後韌體將向作業系統發送 ACPI 信號。快速按下電源按鈕將發送電源按鈕信號。按下復位按鈕將發送復位信號。並且按住按鈕會導致韌體在不向作業系統發送任何信號的情況下切斷系統電源,這不會讓作業系統有時間有序地關閉。換句話說,所有通常在關機時觸發的腳本和触發器都不會觸發,因為韌體從未向作業系統發送信號。這解釋了為什麼您的腳本在長按電源按鈕時不起作用。
要控制行為,您需要配置作業系統如何處理 ACPI 關閉信號。因此,例如,如果您希望電腦暫停,您可以將作業系統配置為在按下電源按鈕時暫停。
但是在長按電源按鈕的情況下,您沒有機會控制任何東西,因為作業系統沒有收到來自韌體的信號。
如果您按照消息日誌
sudo tail -f /var/log/messages
查看按下電源按鈕時登錄的日誌。在我的筆記型電腦(lenovo t14)和台式機(華碩主機板)上,鬆開電源按鈕後,它們都會收到信號。
Aug 16 11:47:43 tp-01 systemd-logind[1508]: Power key pressed.
這是有道理的,因為電路板的韌體正在等待確定印刷機是長還是短。這也意味著,由於長按會立即切斷系統電源,因此在您鬆開按鈕之前,電源將被切斷,並且永遠不會發出信號。