Linux 笔记本电脑合上盖子不休眠设置
概述
默认情况下,Linux 笔记本电脑在合上盖子时会进入休眠/挂起状态。但在某些场景下,我们希望合上盖子后系统继续运行,例如:
- 连接外接显示器使用笔记本作为主机
- 运行下载任务或服务器服务
- 合盖后继续编译或渲染任务
- 作为家庭服务器使用
解决方法
通过修改 systemd-logind 配置文件即可实现合盖不休眠。
步骤
1. 编辑配置文件
sudo vi /etc/systemd/logind.conf
2. 修改配置项
找到以下行:
#HandleLidSwitch=suspend
取消注释并修改为:
HandleLidSwitch=ignore
3. 可选:同时配置其他相关选项
# 合上盖子时忽略(不休眠)
HandleLidSwitch=ignore
# 合上盖子并连接电源时忽略
HandleLidSwitchExternalPower=ignore
# 合上盖子并仅使用电池时忽略
HandleLidSwitchDocked=ignore
4. 重启系统或重启 systemd-logind 服务
# 方法一:重启系统
sudo reboot
# 方法二:重启 systemd-logind 服务(无需重启)
sudo systemctl restart systemd-logind
验证配置
修改完成后,可以使用以下命令验证配置是否生效:
# 查看当前 logind 配置
loginctl show | grep HandleLid
# 查看配置是否已加载
systemctl show systemd-logind | grep HandleLid
预期输出应包含 HandleLidSwitch=ignore。
恢复默认设置
如需恢复合盖休眠的默认行为,将配置改回:
HandleLidSwitch=suspend
然后重启服务或系统即可。
注意事项
⚠️ 重要提醒:
- 散热问题:合盖后继续运行可能导致散热不良,尤其是高性能任务时
- 电池消耗:不休眠会持续消耗电池电量
- 屏幕保护:合盖后屏幕会自动关闭,这是正常现象
- 外接显示器:如使用外接显示器,建议同时设置
HandleLidSwitchExternalPower=ignore
其他相关配置
| 配置项 | 可选值 | 说明 |
|---|---|---|
| HandleLidSwitch | ignore/suspend/hibernate/lock | 合盖时的行为 |
| HandleLidSwitchExternalPower | ignore/suspend/hibernate/lock | 连接电源时合盖的行为 |
| HandleLidSwitchDocked | ignore/suspend/hibernate/lock | 对接状态下合盖的行为 |
故障排查
如果修改后仍然休眠,检查:
- 配置是否正确保存(无语法错误)
- 是否重启了
systemd-logind服务或系统 - 是否有其他电源管理工具冲突(如 TLP、powertop)
- 查看系统日志:
journalctl -u systemd-logind
一键运行脚本
把上面的手动步骤合并成一个脚本,sudo bash 一次搞定:
#!/usr/bin/env bash
#
# 合盖不休眠一键设置
# 用法: sudo bash lid-no-suspend.sh
#
# 功能:
# 1. 备份 /etc/systemd/logind.conf
# 2. 设置 HandleLidSwitch / ExternalPower / Docked 均为 ignore
# 3. 重启 systemd-logind 使配置生效
# 4. 打印当前配置验证
set -euo pipefail
CONF="/etc/systemd/logind.conf"
if [[ "${EUID}" -ne 0 ]]; then
echo "请用 root 身份运行:sudo $0" >&2
exit 1
fi
# 1. 备份原配置
if [[ ! -f "${CONF}.bak" ]]; then
cp -a "${CONF}" "${CONF}.bak"
echo "已备份原配置 → ${CONF}.bak"
fi
# 2. 写入配置(已存在则替换,不存在则追加)
apply() {
local key="$1"
if grep -qE "^\s*#?\s*${key}\s*=" "${CONF}"; then
sed -i -E "s|^\s*#?\s*${key}\s*=.*|${key}=ignore|" "${CONF}"
else
echo "${key}=ignore" >> "${CONF}"
fi
}
apply "HandleLidSwitch"
apply "HandleLidSwitchExternalPower"
apply "HandleLidSwitchDocked"
# 3. 重启服务
systemctl restart systemd-logind
echo "已重启 systemd-logind"
# 4. 验证
echo "当前配置:"
loginctl show | grep HandleLid
也可以直接在线运行,无需下载:
curl -fsSL https://www.0niu.cn/posts/linux-laptop-lid-close-no-suspend/lid-no-suspend.sh | sudo bash
保存为 lid-no-suspend.sh,以 root 身份运行:
sudo bash lid-no-suspend.sh
恢复默认:脚本会自动备份原配置到 /etc/systemd/logind.conf.bak。需要恢复时,把备份文件覆盖回去并重启 systemd-logind 即可,无需手动改配置。