马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
Ubuntu 22.04 的自动休眠(suspend)在笔记本上很省电,但换成常亮的开发机、跑编译任务的构建机、或者需要长期 SSH 连接的服务器时,休眠带来的就是连接中断和任务暂停。本文按「图形界面 → systemd 配置 → GNOME 设置 → 临时抑制 → 服务器场景」五个层次,列出几种禁用自动休眠的做法,并说明各自的适用面与回退方式。
一、图形界面关闭,最快但不持久
桌面环境下最直观的做法,适合只是临时让几台机器不休眠。
- 点右上角电源图标,进入「设置」。
- 左侧选择「电源」。
- 把「屏幕关闭」设为「从不」。
- 把「插入电源时」和「使用电池时」的「自动挂起」都设为「从不」。
这个路径改的是当前用户的会话级设置,换用户、重装系统都会还原。
二、修改 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 官方常见用法,不含任何外链与图片;实际生效情况因桌面环境版本而异,建议先在测试机上按第六节方法验证后再批量推行。 |