在 Linux 系统中,“禁止休眠”通常涉及两个不同的概念,处理方式也截然不同:
- 防止系统进入“休眠”(Hibernate):即系统将内存数据写入磁盘后完全断电。
- 防止系统进入“睡眠/挂起”(Suspend/Sleep):即系统将内存数据保留在 RAM 中,CPU 低功耗运行,屏幕关闭。
大多数用户实际想阻止的是 睡眠(Suspend),因为休眠(Hibernate)在现代 Linux 中默认通常是禁用的,下面我将分别说明如何禁止这两种状态。
禁止系统进入“睡眠/挂起”(Suspend)
这是最常见的需求,例如防止笔记本合盖后睡眠、防止空闲后睡眠等。
方法 1:通过 systemd-logind 配置(推荐)
systemd-logind 是管理用户会话和电源状态的核心服务。
-
编辑配置文件:
sudo nano /etc/systemd/logind.conf
-
修改以下参数(去掉前面的 号并设置值):
# 防止空闲时自动睡眠 IdleAction=none # 空闲后多少秒才触发动作(设为0表示立即,但Action=none则无效) IdleActionSec=0 # 防止合盖时睡眠(笔记本用户常用) HandleLidSwitch=ignore # 防止合盖但接电源时睡眠 HandleLidSwitchExternalPower=ignore # 防止合盖但接Dock时睡眠 HandleLidSwitchDocked=ignore
-
保存文件后,重启 logind 服务使配置生效:
sudo systemctl restart systemd-logind
✅ 推荐设置:
IdleAction=none和HandleLidSwitch=ignore可以彻底禁止自动睡眠。
方法 2:通过 TLP 或 PowerTOP(笔记本电脑)
如果你使用 TLP(电源管理工具),它可能会覆盖 systemd 的设置。
-
编辑 TLP 配置:
sudo nano /etc/tlp.conf
-
找到并修改以下行:
# 禁止合盖睡眠 LID_SUSPEND=0 # 禁止空闲睡眠 IDLE_SLEEP_MODE=0
-
重启 TLP 服务:
sudo systemctl restart tlp
方法 3:通过桌面环境设置(图形界面)
GNOME(Ubuntu 默认桌面)
- 打开 设置 → 电源。
- 将“自动挂起”设置为“关闭”。
- 合盖操作”可用,设置为“不做任何操作”。
KDE Plasma
- 打开 系统设置 → 电源管理。
- 在“电源”选项卡中,将“空闲时”设置为“无操作”。
- 在“行为”选项卡中,将“合盖笔记本”设置为“无操作”。
禁止系统进入“休眠”(Hibernate)
休眠(Hibernate)在大多数 Linux 发行版中默认是禁用的,因为需要较大的 swap 分区(至少等于 RAM 大小)。
方法 1:禁用休眠按钮(图形界面)
在 GNOME 或 KDE 中,通常没有直接的“休眠”按钮,除非你手动启用了它。
启用休眠后如何禁用?
-
编辑 Polkit 规则,阻止休眠:
sudo nano /etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla
-
如果文件存在,删除或注释掉以下内容:
[Re-enable hibernate by default in upower] Identity=unix-user: Action=org.freedesktop.upower.hibernate ResultActive=yes [Re-enable hibernate by default in logind] Identity=unix-user: Action=org.freedesktop.login1.hibernate;org.freedesktop.login1.handle-hibernate-key;org.freedesktop.login1.hibernate-multiple-sessions;org.freedesktop.login1.hibernate-ignore-inhibit ResultActive=yes
-
更简单的方法:直接删除或重命名该文件:
sudo mv /etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla /etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla.bak
-
重启系统或重启 Polkit:
sudo systemctl restart polkit
方法 2:通过内核参数禁用休眠(高级)
编辑 GRUB 配置,添加内核参数:
-
编辑 GRUB 配置:
sudo nano /etc/default/grub
-
在
GRUB_CMDLINE_LINUX_DEFAULT行中添加:GRUB_CMDLINE_LINUX_DEFAULT="quiet splash hibernation=disable"
-
更新 GRUB:
sudo update-grub
-
重启系统。
验证是否生效
测试睡眠(Suspend)
systemctl suspend
如果系统没有进入睡眠,说明配置成功。
测试休眠(Hibernate)
systemctl hibernate
如果提示“操作不被支持”或“未找到休眠设备”,说明休眠已被禁用。
| 目标 | 推荐方法 |
|---|---|
| 禁止自动睡眠(Suspend) | 修改 /etc/systemd/logind.conf,设置 IdleAction=none 和 HandleLidSwitch=ignore |
| 禁止合盖睡眠 | 同上,设置 HandleLidSwitch=ignore |
| 禁止休眠(Hibernate) | 删除 Polkit 规则文件或添加内核参数 hibernation=disable |
✅ 最常用且安全的做法:修改 /etc/systemd/logind.conf 中的 IdleAction=none 和 HandleLidSwitch=ignore,然后重启 systemd-logind 服务。
首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/487646.html



