Evan Carroll Asked: 2018-11-28 16:16:57 +0800 CST2018-11-28 16:16:57 +0800 CST 2018-11-28 16:16:57 +0800 CST pm-suspend 与 systemctl 暂停? 772 对于使用 systemd 的 Linux 发行版,这两个命令之间有实际区别吗? systemctl suspend pm-suspend 我应该使用还是更喜欢哪个? systemd suspend 1 个回答 Voted Best Answer filbranden 2018-11-30T18:36:57+08:002018-11-30T18:36:57+08:00 简而言之,您通常应该更喜欢发行版集成的挂起模式。对于发布 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-utils以systemd-suspend大致相同的方式实现系统的实际挂起,但与系统的其他组件的集成使得调用哪个组件很重要......并且在分发 systemd 时,systemctl suspend通常是合适的人打电话。
简而言之,您通常应该更喜欢发行版集成的挂起模式。对于发布 systemd 的发行版,通常是
systemctl suspend
.例如,Arch Linux wiki 说:
对于 Debian Jessie :
您要坚持使用您的发行版使用的原因是,他们关心挂起/恢复的软件包将发布与
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 进一步支持暂停/休眠/恢复,因为:
systemctl suspend
当然仍然是一种选择。)通过 D-Bus 而不是运行命令触发挂起通常是在桌面环境中很有用。因此,即使两者都
pm-utils
以systemd-suspend
大致相同的方式实现系统的实际挂起,但与系统的其他组件的集成使得调用哪个组件很重要......并且在分发 systemd 时,systemctl suspend
通常是合适的人打电话。