执行sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target后仍休眠,是因为mask仅阻断systemd主动触发路径,而GNOME电源插件、systemd-logind事件响应(如合盖/按键)、内核级空闲检测等仍可绕过;必须同步配置gsettings设为'nothing'、logind.conf中HandleLidSwitch=ignore等参数并重启systemd-logind,以及设置/etc/systemd/sleep.conf禁用内核挂起权限,才能彻底禁用。

systemctl mask 之后为什么还休眠?
执行 sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target 后,四个目标单元状态确实会变成 Loaded: masked,但这只拦住了 systemd 的“主动发起”路径。实际休眠仍可能由其他组件触发——比如 GNOME 的电源插件、systemd-logind 对盖子/按键事件的响应、或内核级空闲检测。单纯 mask 不够,必须配合其他层拦截。
GNOME 桌面下 gsettings 必须设为 'nothing'
gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-ac-type 'nothing' 和 sleep-inactive-battery-type 'nothing' 是关键。很多人误设成 0 或 'blank',但只有 'nothing'(字符串,带单引号)才真正禁用挂起逻辑。设成 0 反而可能被解释为“立即挂起”,'blank' 仅关屏不阻止挂起。
- 检查当前值:
gsettings get org.gnome.settings-daemon.plugins.power sleep-inactive-ac-type - 桌面未登录时(如登录界面),
gsettings不生效,需靠logind.conf或sleep.conf - Ubuntu 22.04+ 中,
sleep-inactive-ac-timeout等 timeout 参数已废弃,只认-type
/etc/systemd/logind.conf 里 HandleLidSwitch=ignore 不只是合盖用
这个配置项影响所有常见休眠触发源:合盖、按电源键、按挂起键(Fn+Sleep)、甚至外接显示器断开等事件。必须取消注释并设为 ignore,否则即使 mask 了 target,systemd-logind 仍会直接调用 systemd-suspend。
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
- 编辑
/etc/systemd/logind.conf,确保以下行存在且无注释:HandleLidSwitch=ignoreHandleLidSwitchDocked=ignoreHandleSuspendKey=ignoreHandleHibernateKey=ignore - 改完后必须运行
sudo systemctl restart systemd-logind,否则不生效 - 注意:某些 OEM 笔记本(如戴尔、联想)固件会绕过 logind 直接触发 S3,此时需进 BIOS 关闭 “Fast Boot” 或 “Modern Standby”
服务器场景别漏掉 /etc/systemd/sleep.conf
Ubuntu 22.04+ 引入 /etc/systemd/sleep.conf,它比 logind.conf 更底层,控制内核是否允许挂起操作。如果没配,即使上层全禁,内核仍可能响应 /sys/power/state 写入。
- 创建或编辑
/etc/systemd/sleep.conf - 写入:
[Sleep] AllowSuspend=no AllowHibernation=no AllowSuspendThenHibernate=no AllowHybridSleep=no
- 该文件优先级高于 logind.conf,且对 headless(无 GUI)系统生效
最易被忽略的是:登录界面(GDM)不读取用户级 gsettings,也不受桌面设置影响。必须靠 logind.conf + sleep.conf 双保险,否则半夜服务器在欢迎屏就自己睡过去了。

















