systemd-sleep.conf 中文手册

译者:金步国


版权声明

本文译者是一位开源理念的坚定支持者,所以本文虽然不是软件,但是遵照开源的精神发布。

其他作品

本文译者十分愿意与他人分享劳动成果,如果你对我的其他翻译作品或者技术文章有兴趣,可以在如下位置查看现有的作品集:

联系方式

由于译者水平有限,因此不能保证译文内容准确无误。如果你发现了译文中的错误(哪怕是错别字也好),请来信指出,任何提高译文质量的建议我都将虚心接纳。


手册索引 . 指令索引systemd-231

名称

systemd-sleep.conf, sleep.conf.d — 休眠配置文件

大纲

/etc/systemd/sleep.conf

/etc/systemd/sleep.conf.d/*.conf

/run/systemd/sleep.conf.d/*.conf

/usr/lib/systemd/sleep.conf.d/*.conf

描述

systemd 支持三种休眠模式:

suspend

内存休眠(休眠到内存)。 操作系统停止运行, 如果主机失去电力 将会导致数据丢失, 但是休眠和唤醒速度很快。 这对应于内核的 suspend, standby, freeze 状态。

hibernate

硬盘休眠(休眠到硬盘)。 操作系统停止运行, 即使主机失去电力 也不会导致数据丢失, 但是休眠和唤醒速度很慢。 这对应于内核的 hibernation 状态。

hybrid-sleep

混合休眠(同时休眠到内存和硬盘)。 操作系统停止运行, 如果主机一直没有失去电力, 那么休眠和唤醒速度很快。 如果主机失去电力, 那么休眠和唤醒速度很慢,但是不会导致数据丢失。 这对应于内核的 suspend-to-both 状态。

当使用 systemctl suspend|hibernate|hybrid-sleep 命令进入休眠模式时, systemd-sleep 命令会根据配置文件的指引,决定向 /sys/power/disk/sys/power/state 中写入什么字符串。

配置目录及其优先级

默认设置是在编译期间确定的, 所以仅在确实需要修改默认设置的情况下, 才需要使用配置文件。位于 /etc/systemd/ 目录中的初始配置文件, 仅包含了展示选项默认值的注释, 目的在于方便系统管理员查看和直接修改。

如果软件包想要自定义某些默认设置, 那么必须将自定义的配置文件安装到 /usr/lib/systemd/*.conf.d/ 目录中。 /etc/ 目录仅供系统管理员使用。 系统管理员可以利用下面的逻辑来覆盖默认设置: 主配置文件最先被读取, 优先级也最低。 所有 *.conf.d/ 中的配置文件 都会覆盖主配置文件中的设置。 所有 *.conf.d/ 中的配置文件(无论位于哪个目录中), 统一按照文件名的字典顺序处理。 如果在多个配置文件中设置了同一个选项, 那么仅以文件名最靠后(字典顺序)的那一个为准。 为了便于排序, 建议给所有 *.conf.d/ 中的配置文件 都加上两位十进制数字的文件名前缀。

如果系统管理员想要屏蔽 /usr/lib/ 目录中的某个配置文件, 那么最佳做法是在 /etc/ 目录中 创建一个指向 /dev/null 的同名符号链接, 即可彻底屏蔽 /usr/lib/ 目录中的同名文件。

选项

所有选项都位于 /etc/systemd/sleep.confsleep.conf.d 中的配置文件中的 "[Sleep]" 小节:

SuspendMode=, HibernateMode=, HybridSleepMode=

分别设置在启动 systemd-suspend.service, systemd-hibernate.service, systemd-hybrid-sleep.service 休眠动作时,写入 /sys/power/disk 中的字符串, 值是一个空格分隔的字符串列表, 依次尝试,直到成功。 如果全部尝试失败,那么将取消休眠操作。

SuspendState=, HibernateState=, HybridSleepState=

分别设置在启动 systemd-suspend.service, systemd-hibernate.service, systemd-hybrid-sleep.service 休眠动作时,写入 /sys/power/state 中的字符串, 值是一个空格分隔的字符串列表, 依次尝试,直到成功。 如果全部尝试失败,那么将取消休眠操作。

例子: freeze

例子: 为了利用 Linux 3.9 中新增的 "freeze" 模式, 可以使用 systemctl suspend 命令,并在配置文件中 做如下配置:

[Sleep]
SuspendState=freeze

参见

systemd-suspend.service(8), systemd(1), systemd.directives(7)