关键在禁用挂起而非“授权”:锁屏不终止进程,真正中断服务的是后续触发的suspend或hibernate;必须修改/etc/systemd/logind.conf中HandleLidSwitch=ignore、HandleLidSwitchExternalPower=ignore、IdleAction=ignore三项,并reload systemd-logind。

锁屏后服务持续运行,关键在禁用挂起而非“授权”
Ubuntu没有“给服务开锁屏后台权限”的概念——锁屏本身不终止进程,真正中断服务的是系统随后触发的 suspend(挂起)或 hibernate(休眠)。所以问题本质不是“让服务继续跑”,而是“阻止系统进入低功耗状态”。常见错误是只关锁屏、不碰电源策略,结果锁屏 2 分钟后屏幕一黑、CPU 断电、所有服务暂停。
-
systemd-logind是第一道闸门:它监听合盖、空闲、电源键等事件,并决定是否调用systemctl suspend - GNOME 的
gsettings控制桌面级空闲行为,但无法覆盖logind的底层挂起指令 - 即使服务用
nohup或screen启动,只要系统挂起了,进程就冻结在内存里,不执行任何代码
必须修改 /etc/systemd/logind.conf 的三项参数
这是唯一能确保锁屏后服务持续运行的系统级配置。其他图形设置(如 GNOME 设置里的“永不息屏”)只影响显示,不阻止挂起。
- 编辑配置:
sudo nano /etc/systemd/logind.conf - 取消注释并设为
ignore:HandleLidSwitch=ignore HandleLidSwitchExternalPower=ignore IdleAction=ignore
- 特别注意:
IdleAction是锁屏后自动挂起的主开关,不改它,其他都白搭 - 重载生效:
sudo systemctl reload systemd-logind(不要用restart,会断开当前会话)
功耗限制策略要分场景看硬件角色
如果你的机器是远程办公用的笔记本,既要服务常驻又要控温控电,不能全设 ignore;如果是固定位置的迷你服务器(如 NUC),可彻底放开。
Ubuntu 26.04 LTS(代号“Resolute Raccoon”)是Canonical于2026年4月23日发布的下一代长期支持版操作系统,提供长达10年的技术支持。它搭载Linux 7.0内核与GNOME 50桌面环境,全面转向Wayland协议,并引入Rust重写的核心工具以增强安全性。官方提供适用于AMD64和ARM64架构的桌面及服务器ISO镜像,是追求前沿技术与极致稳定的开发者
- 仅需防锁屏中断?只改
IdleAction=ignore,保留HandleLidSwitch=suspend—— 合盖仍休眠,但用户主动锁屏后服务不挂起 - 带 UPS 的台式环境?加一行:
HandlePowerKey=ignore,避免意外断电触发关机 - 移动工作站?别碰
logind.conf,改用tlp管理电池策略:sudo apt install tlp,然后在/etc/tlp.d/99-custom.conf中设USB_AUTOSUSPEND=0和RUNTIME_PM_ON_AC=off,减少设备级休眠干扰
验证是否真生效:别信 GUI 界面
图形设置里看到“永不息屏”≠服务不会被挂起。最可靠的验证方式是终端实测:
- 先锁屏:
loginctl lock-session - 立刻查系统状态:
systemctl is-active sleep.target suspend.target,输出应全为inactive - 再查空闲动作:
loginctl show-session $(loginctl | grep "seat" | awk '{print $1}') -p IdleAction,返回值必须是IdleAction=ignore - 最后观察服务日志:
journalctl -u your-service-name -n 20 --no-pager,锁屏 5 分钟后仍有新时间戳,才算真正稳住
最容易被忽略的是 IdleAction 和 IdleActionSec 的配合关系:前者决定“做什么”,后者决定“等多久才做”。哪怕 IdleAction=ignore,若 IdleActionSec 设得极小,某些内核版本仍会误触发。稳妥做法是把 IdleActionSec 也显式设为 0 或注释掉该行,依赖 IdleAction=ignore 的绝对优先级。










