Systemd

pm-suspend 與 systemctl 暫停?

  • November 28, 2019

對於使用 systemd 的 Linux 發行版,這兩個命令之間有實際區別嗎?

  • systemctl suspend
  • pm-suspend

我應該使用還是更喜歡哪個?

簡而言之,您通常應該更喜歡發行版集成的掛起模式。對於發布 systemd 的發行版,通常是systemctl suspend.

例如,Arch Linux wiki 說

systemd 提供了用於掛起、休眠和混合掛起的本機命令,有關詳細資訊,請參閱“使用 systemd 進行電源管理”。這是 Arch Linux 中使用的預設界面。

對於 Debian Jessie :

有了 systemd,pm-utils它的鉤子就不再使用了,取而代之的是systemd-suspend.


您要堅持使用您的發行版的原因是,他們關心掛起/恢復的軟體包將發布與pm-utils( /usr/lib/pm-utils/sleep.d) 或systemd( /usr/lib/systemd/system-sleep/) 集成的鉤子腳本,因此您應該使用相同的界面才能擁有所有正確的掛鉤按預期執行。

此外,發行版通常會將適當的掛起/休眠方法掛接到 ACPI 中,用於硬體事件、桌面環境(用於允許掛起/休眠的關閉按鈕)以及螢幕保護程序/鎖定等。


兩者通常使用相同的介面來pm-suspend實際使電腦進入睡眠狀態。systemd-suspend

兩者都預設使用核心的掛起驅動程序(通過寫入/sys/power/state)並且都支持外部掛起驅動程序(例如,有關如何將其掛接到 systemd 的詳細資訊uswsusp,請參見此處。)

它們都支持在掛起或恢復過程中呼叫的配置文件和鉤子腳本,主要區別在於文件的位置(鉤子的API非常相似):

  • pm-utils從和目錄中的文件讀取其配置/etc/pm/config.d並執行掛鉤。/etc/pm/sleep.d``/usr/lib/pm-utils/sleep.d
  • systemd-suspend``/etc/systemd/sleep.conf從文件(或目錄中的文件)中讀取其配置sleep.conf.d並從/usr/lib/systemd/system-sleep/.

所以,從這個角度來看,兩者看起來非常相似……

但 systemd 進一步支持暫停/休眠/恢復,因為:

  • 您可以將 systemd 單元掛接到掛起/恢復過程中,例如在掛起之前或恢復之後執行它們。(你可以在這裡找到很棒的食譜。)
  • systemd 支持 D-Bus 介面,因此可以通過使用 D-Bus 呼叫而不是執行命令來觸發掛起(儘管執行systemctl suspend當然仍然是一種選擇。)通過 D-Bus 而不是執行命令觸發掛起通常是在桌面環境中很有用。
  • systemd 有一個高級介面,用於通知和讓使用者空間應用程序在完成操作時延遲掛起,抑製劑介面,它比鉤子腳本更靈活方便。(事實上,systemd 建議盡可能使用這個介面而不是鉤子腳本。)

因此,即使兩者都pm-utilssystemd-suspend大致相同的方式實現系統的實際掛起,但與系統的其他組件的集成使得呼叫哪個組件很重要……並且在分發 systemd 時,systemctl suspend通常是合適的人打電話。

引用自:https://unix.stackexchange.com/questions/484550