ubuntu22.04禁止自动休眠的几种方式

[复制链接]
发表于 2026-10-6 11:41:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×

Ubuntu 22.04 的自动休眠(suspend)在笔记本上很省电,但换成常亮的开发机、跑编译任务的构建机、或者需要长期 SSH 连接的服务器时,休眠带来的就是连接中断和任务暂停。本文按「图形界面 → systemd 配置 → GNOME 设置 → 临时抑制 → 服务器场景」五个层次,列出几种禁用自动休眠的做法,并说明各自的适用面与回退方式。

一、图形界面关闭,最快但不持久

桌面环境下最直观的做法,适合只是临时让几台机器不休眠。

  1. 点右上角电源图标,进入「设置」。
  2. 左侧选择「电源」。
  3. 把「屏幕关闭」设为「从不」。
  4. 把「插入电源时」和「使用电池时」的「自动挂起」都设为「从不」。

这个路径改的是当前用户的会话级设置,换用户、重装系统都会还原。

二、修改 logind 配置,系统级生效

想要对所有用户生效,就得动 systemd-logind。它负责电源按键、合盖、休眠等事件的默认处理。

2.1 编辑配置文件

sudo nano /etc/systemd/logind.conf

2.2 把相关事件设为忽略

下面几行默认前面带 # 注释,去掉注释并把值改成 ignore,含义是系统收到这些事件时不采取任何动作:

HandleLidSwitch=ignore
HandleLidSwitchDocked=ignore
HandleSuspendKey=ignore
HandleHibernateKey=ignore
HandleLidSwitchExternalPower=ignore

2.3 让 logind 重新读配置

sudo systemctl restart systemd-logind

改完可以合一下笔记本盖子验证:不再休眠即生效。以后想恢复,把值改回 suspend 之类再重启服务即可。

三、用 gsettings 改 GNOME 电源策略

Ubuntu 22.04 默认桌面是 GNOME,自动挂起这个动作主要由 GNOME 的电源插件决定,光改 logind 有时不够。

3.1 关闭插电时自动挂起

gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-ac-type 'nothing'

3.2 关闭电池模式自动挂起

gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-battery-type 'nothing'

3.3 核对当前值

gsettings get org.gnome.settings-daemon.plugins.power sleep-inactive-ac-type
gsettings get org.gnome.settings-daemon.plugins.power sleep-inactive-battery-type

返回 nothing 表示已禁用。这种方法只影响 GNOME 会话,纯命令行或服务器版机器上 gsettings 命令本身可能不存在。

四、临时抑制:只在需要时挡住休眠

构建、压测、长时间下载这类任务,更合理的做法是「任务期间不休眠」,而不是永久关掉。systemd 提供了 systemd-inhibit:--what=sleep 表示阻止进入睡眠,后面跟一个常驻循环命令即可。

4.1 写一个常驻抑制服务

sudo nano /etc/systemd/system/inhibit-suspend.service

内容如下:

[Unit]
Description=Inhibit suspend

[Service]
ExecStart=/usr/bin/systemd-inhibit --why="Prevent suspend" --what=sleep /bin/bash -c "while true; do sleep 1000; done"

[Install]
WantedBy=multi-user.target

4.2 重载并启用

sudo systemctl daemon-reload
sudo systemctl enable inhibit-suspend.service
sudo systemctl start inhibit-suspend.service

这个服务会一直挡着休眠;不用了就 sudo systemctl stop inhibit-suspend.service 并 disable,系统恢复原状。

临时场景还有更轻的用法:直接在终端里跑 systemd-inhibit --what=sleep --why="building" make,命令跑完抑制自动解除,适合一次性任务。

五、无图形界面的服务器场景

服务器版没有 GNOME,也不需要屏幕,但仍可能被定时器(idle 检测)或被运维策略触发休眠。可以直接屏蔽睡眠相关的 target:

sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target

mask 会建立禁止启动的符号链接,比 disable 更硬,恢复用 sudo systemctl unmask 即可。执行前请确认这台机器确实作为常驻服务使用,否则会失去所有省电能力。

六、怎么验证是否真的禁住了

  • 桌面端:合盖或等待超过原定挂起时间,看 journalctl -u systemd-logind 有没有出现 suspend 相关记录。
  • 服务端:systemctl status systemd-logind 看服务状态,配合上文 mask 结果判断。
  • 临时抑制:systemd-inhibit --list 会列出当前所有抑制者,能看到自己的条目说明生效。
  • 再看电源状态:upower -d 或 cat /proc/sys/kernel/power/state 辅助确认系统当前并未进入深度省电。

七、选哪种方案

  • 只是自己手上这台笔记本:图形界面 + gsettings 足够。
  • 要管理一批机器、统一策略:logind.conf 走系统级,配合配置管理下发。
  • 只在跑长任务时需要禁休眠:systemd-inhibit 最干净,任务结束自动恢复。
  • 天生常驻的服务器:mask 掉睡眠 target,同时盯住功耗与散热。

需要说明的是,禁用自动休眠会直接增加功耗,笔记本用户尤其要权衡续航。生产环境上更推荐「任务期抑制 + 常态保留休眠」的组合,而不是一刀切全关。

qidao123.com企服评测-应用市场 编辑提示:本文为电源管理配置的经验梳理,所涉命令均为 systemd 与 GNOME 官方常见用法,不含任何外链与图片;实际生效情况因桌面环境版本而异,建议先在测试机上按第六节方法验证后再批量推行。

回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表