必须同时禁用systemd目标、修改logind.conf中HandleLidSwitch和IdleAction为ignore、配置sleep.conf.d中AllowSuspend=no,三者缺一不可;仅mask suspend.target无效,因logind会绕过target直接触发睡眠。

只执行 sudo systemctl mask suspend.target 没用,系统仍会合盖/空闲挂起——logind 服务绕过 systemd target 直接调用底层睡眠逻辑。
必须同时改三处:logind.conf、sleep.conf.d、systemd targets
禁用不是单点操作,而是三层拦截:
-
HandleLidSwitch=ignore和IdleAction=ignore是防自动触发的关键,否则合盖或鼠标键盘不动几分钟就挂起 -
/etc/systemd/sleep.conf.d/disable-sleep.conf中设AllowSuspend=no才能真正隐藏“挂起”菜单项,并阻止 UPower 等服务调用systemd-suspend.service -
sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target只防手动执行(比如命令行敲systemctl suspend),不防自动行为
logind.conf 修改后必须重启 systemd-logind
改完 /etc/systemd/logind.conf 不重启服务,配置完全不生效。常见错误是改完就去合盖测试,结果还是挂起。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 确认已取消注释并设置这四行:
HandleSuspendKey=ignore、HandleHibernateKey=ignore、HandleLidSwitch=ignore、IdleAction=ignore - 执行
sudo systemctl restart systemd-logind,无需登出,但建议登出重进一次确保桌面环境读取新策略 - GNOME/KDE/MATE 等桌面环境可能叠加自己的空闲策略,
logind.conf是基础,不是终点
sleep.conf.d 配置比直接改 sleep.conf 更安全
直接编辑 /etc/systemd/sleep.conf 在 systemd 升级时可能被覆盖;用 .conf.d/ 方式才是运维推荐做法。
- 创建
/etc/systemd/sleep.conf.d/disable-sleep.conf,内容只需:[Sleep] AllowSuspend=no AllowHibernation=no AllowSuspendThenHibernate=no AllowHybridSleep=no
- 老版本 systemd(如 v245 之前)可能不识别
AllowSuspendThenHibernate,忽略即可,不影响其他项 - 该文件生效后,右上角关机菜单里的“挂起”选项会立即消失,这是最直观的验证方式
最容易被忽略的是:即使三处全配好,某些厂商预装的 BIOS/UEFI 设置(如 Intel Rapid Start)、第三方电源管理工具(如 TLP)、甚至 NetworkManager 的 wifi.powersave 行为,都可能间接触发系统低功耗状态。真要彻底锁死,得查 journalctl -b | grep -i "suspend\|hibernate\|sleep" 看日志里是谁发起的请求。

















