默认情况下如何使用 pm-suspend-hybrid 而不是 pm-suspend?

blu*_*yed 43 suspend hybrid

我想在合上盖子或从菜单中选择“暂停”时使用混合暂停方法而不是暂停。

我可以想象更改 pm-suspend 脚本以自动执行此操作,但可能有更易于维护/更简单的方法。

blu*_*yed 44

间接混合睡眠

这是较旧的方法:首先挂起,然后在延迟(默认为 15 分钟)后唤醒休眠。在 3.6 之前的 Linux 内核中使用它,或者如果你喜欢它,它在 15 分钟后不再使用任何电源。

添加文件/etc/pm/config.d/00-use-suspend-hybrid

# Always use suspend_hybrid instead of suspend
if [ "$METHOD" = "suspend" ]; then
  METHOD=suspend_hybrid
fi
# The delay after which hibernation gets triggered (default: 900 seconds, 15 minutes):
PM_HIBERNATE_DELAY=900
Run Code Online (Sandbox Code Playgroud)

您可能希望通过以下代码确保您的系统支持混合方法。如果它说“0”它应该工作:

sudo pm-is-supported --suspend-hybrid && echo $?
Run Code Online (Sandbox Code Playgroud)

真正的混合挂起与 Linux 3.6+

如果您有 Linux 3.6 内核,则可以使用以下内容,它将从一开始就挂起到磁盘和 RAM。

添加文件/etc/pm/config.d/00-use-suspend-hybrid

# WORKAROUND: always set the default hibernate mode first (normal mode)
# (not required if you have the patch mentioned by Rohan below (http://askubuntu.com/a/344879/169))
HIBERNATE_MODE=platform

# Always use hibernate instead of suspend, but with "suspend to both"
if [ "$METHOD" = "suspend" ]; then
  METHOD=hibernate
  HIBERNATE_MODE=suspend
fi

# Make sure to use the kernel's method, in case uswsusp is installed etc.
SLEEP_MODULE=kernel
Run Code Online (Sandbox Code Playgroud)

这将始终将图像写入磁盘,然后挂起到 RAM,其优点是恢复总是很快(只要电池没有耗尽)并且机器不会在短时间内唤醒(在 PM_HIBERNATE_DELAY 之后)真正冬眠。

缺点是该过程需要更长的时间(因为它总是休眠到磁盘),并且从长远来看,您的电池可能会耗尽(例如 12 小时后)。

  • 一个小提示,而不是“sudo pm-is-supported --suspend-hybrid && echo $?”,使用“sudo pm-is-supported --suspend-hybrid”;回声 $?' 因为 pm-is-supported 的返回值为 0 表示支持,1 表示不支持。 (2认同)

use*_*186 37

Ubuntu 18.04 定时选项

Ubuntu 18.04中有一个新的定时选项。在systemd是可用的新模式suspend-then-hibernate。这将从睡眠模式开始,然后在固定时间后转换到休眠模式。

在该hybrid-sleep模式下,只有当电池电量严重不足且系统关闭时,休眠部分才会生效。

要开始使用此功能,您需要创建一个/etc/systemd/sleep.conf包含以下内容的文件:

[Sleep]
HibernateDelaySec=3600
Run Code Online (Sandbox Code Playgroud)

这将在睡眠 1 小时后从睡眠进入休眠状态。您可以编辑HibernateDelaySec以更改休眠的延迟。

首先,使用 systemd 测试 suspend-then-hibernate 是否有效

Ctrl+ Alt+打开终端T并输入:

sudo systemctl suspend-then-hibernate
Run Code Online (Sandbox Code Playgroud)

如果它有效,让它永久。

  • 当我关闭盖子时,以下工作。

/etc/systemd/logind.conf使用您喜欢的编辑器打开文件。您将需要通过 调用您的管理权限sudogksudopkexec编辑此文件。

找到两行:

#HandleSuspendKey=suspend
#HandleLidSwitch=suspend
Run Code Online (Sandbox Code Playgroud)

注意,这些行在它们#前面被注释掉了。这suspend是默认操作。在这两行中删除#并更改suspendsuspend-then-hibernate,使它们看起来像这样:

HandleSuspendKey=suspend-then-hibernate
HandleLidSwitch=suspend-then-hibernate
Run Code Online (Sandbox Code Playgroud)

保存文件。logind通过以下命令注销并重新登录或重新启动服务:

systemctl restart systemd-logind.service
Run Code Online (Sandbox Code Playgroud)

警告!您的用户会话将重新启动

来源:盖子关闭暂停然后休眠

Ubuntu 16.04 及以上

解决方案通过blueyed 为真正的混合使用Linux 3.6+暂停并没有为我工作。我怀疑这是因为 Ubuntu 16.04 使用systemd但不使用该文件/etc/pm/config.d/00-use-suspend-hybrid

首先,使用 systemd 测试休眠和混合睡眠是否有效

Ctrl+ Alt+打开终端T并输入:

sudo systemctl hibernate
Run Code Online (Sandbox Code Playgroud)

这应该让您的计算机进入休眠状态。要尝试混合睡眠,请输入:

sudo systemctl hybrid-sleep
Run Code Online (Sandbox Code Playgroud)

如果它有效,让它永久。

  • 当我关闭盖子时,以下工作。

/etc/systemd/logind.conf使用您喜欢的编辑器打开文件。您将需要通过 调用您的管理权限sudogksudopkexec编辑此文件。

找到两行:

#HandleSuspendKey=suspend
#HandleLidSwitch=suspend
Run Code Online (Sandbox Code Playgroud)

注意,这些行被注释掉了 #前面。这suspend是默认操作。在这两行中删除#并更改suspendhybrid-sleep,使它们看起来像这样:

HandleSuspendKey=hybrid-sleep
HandleLidSwitch=hybrid-sleep
Run Code Online (Sandbox Code Playgroud)

保存文件。注销并重新登录。

笔记:

  • 以外 suspend或者hybrid-sleep还有第三种选择,hibernate.
  • 我的笔记本电脑没有物理睡眠按钮。所以我无法测试它。
  • 单击 Suspend齿轮菜单中的 可使计算机正常挂起而不是混合睡眠。

来源: https //superuser.com/questions/719447/how-to-use-systemd-hybrid-sleep-instead-of-suspend-under-gnome-in-linux

我希望这有帮助

  • 这个答案需要更多的赞成。在 16.04 中为我修复了问题。谢谢。 (2认同)