本文译者是一位开源理念的坚定支持者,所以本文虽然不是软件,但是遵照开源的精神发布。
本文译者十分愿意与他人分享劳动成果,如果你对我的其他翻译作品或者技术文章有兴趣,可以在如下位置查看现有的作品集:
由于译者水平有限,因此不能保证译文内容准确无误。如果你发现了译文中的错误(哪怕是错别字也好),请来信指出,任何提高译文质量的建议我都将虚心接纳。
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, standby, freeze 状态。
休眠到硬盘。 操作系统停止运行, 即使主机失去电力 也不会导致数据丢失, 但是休眠和唤醒速度很慢。 这对应于内核的 hibernation 状态。
混合休眠(同时休眠到内存和硬盘)。 操作系统停止运行, 如果主机一直没有失去电力, 那么休眠和唤醒速度很快。 如果主机失去电力, 那么休眠和唤醒速度很慢,但是不会导致数据丢失。 这对应于内核的 suspend-to-both 状态。
两阶段休眠(先休眠到内存再休眠到硬盘)。 系统首先休眠到内存,如果经过 HibernateDelaySec= 时长之后仍然没有任何操作, 那么系统将会被 RTC 警报唤醒并立即休眠到硬盘。
这些配置文件
中的
设置,
决定了
systemd-sleep
在
systemd(1)
休眠系统时,向 /sys/power/disk
与 /sys/power/state
中写入什么字符串。
参见
systemd.syntax(5)
以了解通用配置语法。
默认设置是在编译期间确定的,
所以仅在确实需要修改默认设置的情况下,
才需要使用配置文件。位于
/etc/systemd/
目录中的初始配置文件,
仅包含了展示选项默认值的注释,
目的在于方便系统管理员查看和直接修改。
如果软件包想要自定义某些默认设置,
那么必须将自定义的配置文件安装到
/usr/lib/systemd/*.conf.d/
目录中。
/etc/
目录仅供系统管理员使用。
系统管理员可以利用下面的逻辑来覆盖默认设置:
主配置文件最先被读取,
优先级也最低。
所有 *.conf.d/
中的配置文件
都会覆盖主配置文件中的设置。
所有 *.conf.d/
中的配置文件(无论位于哪个目录中),
统一按照文件名的字典顺序处理。
当多个配置文件都设置了同一个选项的时候:
(1)如果该选项仅接受一个单一值,那么仅以文件名最靠后(字典顺序)的那一个为准;
(2)如果该选项可接受一个值列表,那么将会按照文件名的字典顺序将所有值列表拼接起来。
为了便于排序,
建议给所有 *.conf.d/
中的配置文件
都加上
两位十进制数字的文件名前缀。
如果系统管理员想要屏蔽 /usr/lib/
目录中的某个配置文件,
那么最佳做法是在 /etc/
目录中
创建一个指向 /dev/null
的同名符号链接,
即可彻底屏蔽 /usr/lib/
目录中的
同名文件。
所有选项都位于
/etc/systemd/sleep.conf
或
sleep.conf.d
中的配置文件中的
"[Sleep]
" 小节:
AllowSuspend=
, AllowHibernation=
, AllowSuspendThenHibernate=
, AllowHybridSleep=
¶默认情况下, 允许使用所有有效(内核支持、必要资源可用)的休眠模式。 但是,可以使用这些选项禁用特定的休眠模式(设为"no")。
如果设置了 AllowHibernation=no
或 AllowSuspend=no
,
那么相当于隐含了 AllowSuspendThenHibernate=no
与
AllowHybridSleep=no
(因为它们都同时使用到了两种休眠模式)。
不过,可以通过显式设置 AllowSuspendThenHibernate=yes
与
AllowHybridSleep=yes
来明确开启这两种休眠模式。
SuspendMode=
, HibernateMode=
, HybridSleepMode=
¶这些选项
分别设置
在启动
systemd-suspend.service
,
systemd-hibernate.service
,
systemd-hybrid-sleep.service
,
systemd-suspend-then-hibernate.service
休眠动作时,写入 /sys/power/disk
中的字符串,
值是一个空格分隔的字符串列表,
依次尝试,直到成功。
如果全部尝试失败,那么将取消休眠操作。
SuspendState=
, HibernateState=
, HybridSleepState=
¶这些选项
分别设置
在启动
systemd-suspend.service
,
systemd-hibernate.service
,
systemd-hybrid-sleep.service
,
systemd-suspend-then-hibernate.service
休眠动作时,写入 /sys/power/state
中的字符串,
值是一个空格分隔的字符串列表,
依次尝试,直到成功。
如果全部尝试失败,那么将取消休眠操作。
HibernateDelaySec=
¶在自动休眠到硬盘前
等待多少秒无操作。
仅适用于
systemd-suspend-then-hibernate.service
例子: 为了利用 Linux 3.9 中新增的 "freeze" 模式, 可以使用 systemctl suspend 命令, 并在配置文件中做如下配置:
[Sleep] SuspendState=freeze