13.4. 关闭、挂起和休眠系统
作为系统管理员,您可以使用不同的电源管理选项来管理功耗,执行合适的 shutdown 以确保保存所有数据,或者重启系统以应用更改和更新。
13.4.1. 系统关闭
要关闭系统,您可以直接使用 systemctl
工具,或者通过 shutdown
命令来调用这个工具。
使用 shutdown
有以下优点:
-
您可以使用
time
参数来安排一个 shutdown。这也会警告用户系统已计划 shutdown。 - 您可以取消 shutdown。
其他资源
13.4.2. 安排一个系统 shutdown
作为系统管理员,您可以安排一个延迟 shutdown,给用户保存其工作及注销系统留出时间。使用 shutdown
命令执行以下操作:
- 关闭系统并在一定时间后关闭机器
- 在不关掉机器电源的情况下关闭和停止系统
- 取消待处理的 shutdown
先决条件
- 根访问权限
流程
使用 shutdown
命令执行以下任何一个任务:
指定您要关闭系统并关闭机器的时间:
# shutdown --poweroff hh:mm
其中
hh:mm
是 24 小时时间表示法的时间。为防止新的登录,在系统 shutdown 前 5 分钟会创建/run/nologin
文件 。当使用时间参数时,您可以通过指定可选的 wall 消息 来通知登录到计划关闭的系统的用户,如
shutdown --poweroff 13:59 "Attention。系统将于 13:59"
关闭。在延迟后关闭和停止系统,而不关闭机器:
# shutdown --halt +m
其中
+m
是延迟时间(以分钟为单位)。您可以使用now
关键字作为+0
的别名。取消一个待处理的 shutdown:
# shutdown -c
其他资源
-
shutdown(8)
手册页 - 使用 systemctl 命令关闭系统
13.4.3. 使用 systemctl 命令来关闭系统
作为系统管理员,您可以关闭系统并关闭机器,或使用 systemctl
命令关闭和停止系统,而不关掉机器电源。
先决条件
- 根访问权限
流程
使用 systemctl
命令执行以下任何一个任务:
关闭系统并关掉机器电源:
# systemctl poweroff
关闭和停止系统,而不关掉机器电源:
# systemctl halt
默认情况下,运行其中任何一个命令都可让 systemd
向当前登录到该系统的所有用户发送一条信息性消息。要防止 systemd
发送这条消息,请使用 --no-wall
命令行选项运行所选命令。
13.4.4. 重启系统
当您重启系统时,systemd
会停止所有正在运行的程序和服务,系统会关闭,然后立即启动。在以下情况下重启系统很有帮助:
- 安装新软件或更新后
- 更改系统设置后
- 故障排除系统问题时
先决条件
- 根访问权限
流程
重启系统:
# systemctl reboot
默认情况下,当您使用此命令时,systemd
会向当前登录到该系统的所有用户发送一条信息性消息。要防止 systemd
发送这条消息,请使用 --no-wall
选项运行这个命令。
13.4.5. 通过挂起和休眠系统来优化功耗
作为系统管理员,您可以管理功耗,节省系统能源,并保留系统的当前状态。要做到这一点,请应用以下模式之一:
- suspend
- 挂起会将系统状态保存在 RAM 中,但 RAM 模块除外,关闭机器中的大多数设备。当您重新打开机器时,系统会从内存中恢复其状态,而无需再次引导。由于系统状态保存在 RAM 中,而不是保存在硬盘上,因此,从挂起模式恢复系统比从休眠模式恢复要快得多。但是,挂起的系统状态也会受到断电的影响。
- Hibernate
- 休眠会在硬盘上保存系统状态,并关闭机器。当您重新打开机器时,系统会从保存的数据中恢复其状态,而无需再次引导。由于系统状态保存在硬盘上,而不是保存在 RAM 中,因此机器不必保持对 RAM 模块的供电。但是,因此,从休眠模式恢复系统要比将其恢复为挂起模式恢复要慢得多。
- Hybrid sleep
- 合并了休眠和挂起的元素。系统首先在硬盘上保存当前状态,并进入类似挂起的低电源状态,这允许系统更快地恢复。混合睡眠的好处是,如果系统在睡眠状态下断电,它仍然可以从硬盘上保存的镜像中恢复之前的状态,类似于休眠。
- suspend-then-hibernate
-
此模式首先挂起系统,这会将当前系统状态保存到 RAM,并将系统置于低电源模式。如果系统保持挂起一段时间,则系统会休眠,您可以在
HibernateDelaySec
参数中定义。休眠将系统状态保存到硬盘上,并完全关闭系统。suspend-then-hibernate 模式提供了保留电池电源的好处,同时您仍能快速地恢复工作。另外,这个模式确保您的数据在出现电源故障时被保存。
先决条件
- 根访问权限
流程
选择适当的节能方法:
挂起系统:
# systemctl suspend
休眠系统:
# systemctl hibernate
休眠并挂起系统:
# systemctl hybrid-sleep
挂起然后休眠系统:
# systemctl suspend-then-hibernate
13.4.6. systemctl 的电源管理命令的概述
您可以使用以下 systemctl
命令列表来控制系统的电源管理。
systemctl 命令 | 描述 |
---|---|
| 关闭系统。 |
| 关闭系统。 |
| 重启该系统。 |
| 挂起系统。 |
| 休眠系统。 |
| 休眠并挂起系统。 |
13.4.7. 更改电源按钮行为
当您在计算机上按 power 按钮时,它会默认挂起或关闭系统。您可以根据您的偏好自定义此行为。
13.4.7.1. 更改 systemd 中的电源按钮行为
当您在非图形 systemd
目标中按 power 按钮时,它会默认关闭系统。您可以根据您的偏好自定义此行为。
先决条件
- 管理访问权限.
流程
-
打开
/etc/systemd/logind.conf
配置文件。 -
查找有
HandlePowerKey=poweroff
的行。 -
如果行以
#
符号开头,请将其删除以启用设置。 使用以下选项之一替换
poweroff
:poweroff
- 关闭计算机。
reboot
- 重启系统。
halt
- 启动系统停止。
kexec
-
启动
kexec
重启。 suspend
- 挂起系统。
hibernate
- 启动系统休眠。
ignore
- 什么都不做。
例如,要在按下电源按钮时重启系统,请使用这个设置:
HandlePowerKey=reboot
- 保存更改并关闭编辑器。
后续步骤
- 如果您使用图形会话,还要在 GNOME 中配置电源按钮。请参阅 第 13.4.7.2 节 “更改 GNOME 中的电源按钮行为”。
13.4.7.2. 更改 GNOME 中的电源按钮行为
在图形登录屏幕或在图形用户会话中,按 power 按钮默认挂起机器。当用户物理按下 power 按钮或从远程控制台按下虚拟 power 按钮时,才会出现这种情况。您可以选择不同的 power 按钮行为。
先决条件
-
您已在
systemd
中配置了电源按钮行为。请参阅 第 13.4.7.1 节 “更改 systemd 中的电源按钮行为”。
流程
在
/etc/dconf/db/local.d/01-power
文件中为系统范围的设置创建一个本地数据库。输入以下内容:[org/gnome/settings-daemon/plugins/power] power-button-action='suspend'
使用以下 power 按钮操作之一替换
suspend
:nothing
- 什么都不做。
suspend
- 挂起系统。
hibernate
- 休眠系统。
interactive
显示一个弹出窗口查询,询问用户要做什么。
使用交互模式时,在按下 power 按钮后,系统会在 60 秒后自动关闭。但是,您可以从弹出查询中选择不同的行为。
可选:覆盖用户的设置,并阻止用户更改它。在
/etc/dconf/db/local.d/locks/01-power
文件中输入以下配置:/org/gnome/settings-daemon/plugins/power/power-button-action
更新系统数据库:
# dconf update
- 注销并重新登录,使系统范围的设置生效。