pm-suspend 与 systemctl 挂起?

pm-suspend 与 systemctl 挂起?

对于使用 systemd 的 Linux 发行版,这两个命令之间有实际区别吗?

  • systemctl suspend
  • pm-suspend

我应该使用哪个或更喜欢哪个?

答案1

简而言之,您通常应该更喜欢发行版集成的挂起模式。对于搭载 systemd 的发行版,通常是systemctl suspend.

例如,Arch Linux 维基说:

systemd 提供用于挂起、休眠和混合挂起的本机命令,有关详细信息,请参阅“使用 systemd 进行电源管理”。这是 Arch Linux 中使用的默认界面。

对于 Debian 杰西:

有了 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)并且都支持外部挂起驱动程序(例如uswsusp,请参阅这里有关如何将其挂接到 systemd 的详细信息。)

它们都支持在挂起或恢复过程中调用的配置文件和钩子脚本,主要区别在于文件的位置(钩子的 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 有一个高级接口,用于通知用户空间应用程序并让它们在完成操作时延迟挂起,抑制剂界面,比hook脚本更加灵活方便。 (事实上​​,systemd 建议尽可能使用此接口而不是挂钩脚本。)

因此,即使两者以大致相同的方式pm-utils实现systemd-suspend系统的实际挂起,但与系统其他组件的集成使得调用哪个组件很重要......并且在发行 systemd 的发行版上,通常systemctl suspend是打电话的正确人选。

相关内容