systemctl 挂起是如何工作的?

systemctl 挂起是如何工作的?

来自 systemctl 联机帮助页:

暂停

暂停系统。这将触发特殊目标单元 suspend.target 的激活。该命令是异步的,将在挂起操作成功入队后返回。它不会等待挂起/恢复周期完成。

在我的系统上suspend.target看起来像这样:

[Unit]
Description=Suspend
Documentation=man:systemd.special(7)
DefaultDependencies=no
Requires=systemd-suspend.service
After=systemd-suspend.service
StopWhenUnneeded=yes

如果我查看man:systemd.special(7)那里列出的内容,我会发现:

suspend.target 用于挂起系统的特殊目标单元。这会引入 sleep.target。

如果我深入研究,systemd-suspend.service我会得到:

systemd-suspend.service 是一个由 suspend.target 拉入的系统服务,负责实际的系统挂起。

...

在内部,该服务会将“mem”等字符串回显到 /sys/power/state 中,以触发实际的系统挂起。具体写入的内容可以在 /etc/systemd/sleep.conf 或 sleep.conf.d 文件的“[Sleep]”部分进行配置。

的文档sleep.conf告诉我:

默认配置是在编译期间定义的,因此仅当需要偏离这些默认值时才需要配置文件。

我的系统上没有,sleep.conf所以它必须使用编译的默认值。我不明白那些是什么。

默认情况下发送给/sys/power/state朋友的确切命令是什么?systemctl suspend

答案1

默认值是"mem", "standby", "freeze"(最后两个和配置睡眠模式的能力已经2013年添加因此它们可能不适用于较旧的设置)。
您引用的手册页描述了它是如何完成的,即systemd-suspend.service写道

"mem"...类似于into 的字符串/sys/power/state,用于触发实际的系统挂起。

有关睡眠状态以及sysfs用户空间可用于控制这些状态的接口的更多信息,请参阅官方文档:系统睡眠状态

相关内容