pm-suspend vs systemctl暂停了吗?


Answers:


16

简而言之,您通常应该更喜欢发行版集成的挂起模式。对于系统发行的发行版,通常是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-suspendsystemd-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具有一个高级接口,用于通知和让用户空间应用程序在完成操作时延迟挂起,它是抑制器接口,它比钩子脚本更灵活,更方便。(实际上,systemd建议尽可能使用此接口,而不要使用钩子脚本。)

因此,即使两者pm-utilssystemd-suspend实现实际在大约相同的方式暂停系统,与系统的其他部件的整合使得它如此它的问题,其中一个叫...而上分布航运systemd,则systemctl suspend通常是合适的人打电话。


1
这是涵盖所有基础的非常好的答案。谢谢你的背景!我看不到Xubuntu使用pm-suspend,所以也许在系统安装前的日子里我安装了它,但从未删除过它,而我是唯一使用它的人。Debian确实可以告诉您什么时候有更新的方式来做某事。
埃文·卡洛尔

1
+1。systemctl是否在我在unix.stackexchange.com/questions/435168/…中遇到的问题中起作用
蒂姆(Tim)

1
有趣的是,Ubuntu 18.04 pm-utils默认情况下未安装,并且似乎依赖systemctl,但是其中/usr/lib/pm-utils/sleep.d/包含东西并且/usr/lib/systemd/system-sleep/不存在。但是,我的确看到了/lib/systemd/system-sleep/以及下的更多内容/snap/,所有这些文件中都有一个或两个文件。
Izkata
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.