ubuntu系统睡眠时间由屏幕变暗、锁屏、系统挂起三类行为分别控制:gsettings管理gnome桌面级空闲与锁屏(如idle-delay、lock-enabled),/etc/systemd/logind.conf控制底层挂起动作(idleaction、idleactionsec),休眠需额外启用swap及内核resume参数。

Ubuntu 里“系统睡眠时间”不是单一开关,它实际由三类行为叠加控制:屏幕变暗、锁屏、系统挂起(suspend)。你不能只设一个“睡眠时间”,得按需分别调整,否则容易出现“设了15分钟却5分钟就黑屏”或“屏幕早黑了但系统不挂起”这类错位。
gsettings 控制屏幕变暗和锁屏时间(GNOME 桌面)
这是最常用也最容易被策略锁死的部分。GNOME 桌面通过 gsettings 管理用户级电源行为,包括:
-
org.gnome.desktop.session idle-delay:空闲多少秒后触发动作(如锁屏) -
org.gnome.desktop.screensaver lock-delay:空闲多久后锁屏(通常依赖 idle-delay) -
org.gnome.desktop.screensaver lock-enabled:是否启用锁屏
常见错误是只改 idle-delay 却没关锁屏,结果屏幕黑了但系统没挂起;或者改了但企业 IT 用 dconf lockdown 锁定了这些键,导致设置立即回滚。
实操建议:
- 设空闲15分钟后锁屏:
gsettings set org.gnome.desktop.session idle-delay 900 - 禁用锁屏(仅适用于可信环境):
gsettings set org.gnome.desktop.screensaver lock-enabled false - 检查是否被锁定:
dconf read /org/gnome/desktop/session/idle-delay,如果返回error: Key not found或值不可写,说明已被策略覆盖
/etc/systemd/logind.conf 控制系统挂起(Suspend)行为
真正让 CPU 停止运行、内存保持供电的是 systemd 的 logind 服务,它管的是“系统级空闲响应”,和桌面无关。关键配置项在 /etc/systemd/logind.conf 中:
-
IdleAction=lock或IdleAction=suspend:空闲后执行什么动作 -
IdleActionSec=30min:空闲多久后触发(单位支持 s/min/h,如600s) -
HandleLidSwitch=suspend:合盖动作(可设为ignore防误触发)
注意:IdleActionSec 不是“从开机开始计时”,而是“最后一次用户交互后持续空闲时长”。如果你开着终端跑后台任务,systemd 默认仍会认为“有活跃 session”,不会挂起——除非你显式标记 session 为 idle(比如用 systemd-inhibit 包裹任务)。
Ubuntu 26.04 LTS(代号“Resolute Raccoon”)是Canonical于2026年4月23日发布的下一代长期支持版操作系统,提供长达10年的技术支持。它搭载Linux 7.0内核与GNOME 50桌面环境,全面转向Wayland协议,并引入Rust重写的核心工具以增强安全性。官方提供适用于AMD64和ARM64架构的桌面及服务器ISO镜像,是追求前沿技术与极致稳定的开发者
实操建议:
- 编辑配置:
sudo nano /etc/systemd/logind.conf - 取消注释并设为:
IdleAction=suspend和IdleActionSec=900s - 重启服务:
sudo systemctl restart systemd-logind - 验证:
loginctl show-session $(loginctl | grep -o 'session-[0-9]*' | head -n1) -p IdleSinceUSec查看当前空闲时间戳
休眠(Hibernate)需额外启用,且不等于挂起
很多人把“睡眠”默认理解为休眠(hibernate),但 Ubuntu 默认禁用休眠功能。挂起(suspend)是停 CPU、保内存供电;休眠是把内存内容写入 swap 分区再彻底断电。两者超时设置互不影响。
如果你真要设“休眠时间”,必须:
- 确认 swap 分区大小 ≥ 物理内存(否则
pm-hibernate会失败) - 启用 hibernate:编辑
/etc/default/grub,在GRUB_CMDLINE_LINUX_DEFAULT加resume=UUID=xxx(swap 分区 UUID) - 更新 grub:
sudo update-grub - 然后才能在
logind.conf中设IdleAction=hibernate
否则,即使写了 IdleAction=hibernate,系统也会静默 fallback 到 lock 或忽略。
验证休眠是否可用:sudo systemctl hibernate —— 成功则立刻关机,恢复后状态不变;失败则报错或卡住。
真正麻烦的从来不是“怎么设”,而是“设了为什么没生效”:GNOME 设置只管屏幕和锁屏,systemd 管挂起,休眠还得自己配 swap 和内核参数。三者层级不同、互不感知,出问题时得一层层查日志(journalctl -u systemd-logind 最有用),而不是反复点图形界面。










