第一步:现在登录 Linux01,执行这个
1. 查看当前的合盖策略 1 2 sudo systemd-inhibit --list grep -i HandleLidSwitch /etc/systemd/logind.conf
2. 禁止合盖休眠——有多个位置需要改 编辑 logind.conf 1 2 3 sudo sed -i 's/^#HandleLidSwitch=.*/HandleLidSwitch=ignore/' /etc/systemd/logind.conf sudo sed -i 's/^#HandleLidSwitchExternalPower=.*/HandleLidSwitchExternalPower=ignore/' /etc/systemd/logind.conf sudo sed -i 's/^#HandleLidSwitchDocked=.*/HandleLidSwitchDocked=ignore/' /etc/systemd/logind.conf
3. 重启服务生效 1 sudo systemctl restart systemd-logind
4. 验证是否生效 1 sudo systemctl status systemd-logind | grep -i lid
应该看到 lid相关的已改为 ignore 第二步:屏蔽笔记本盖子的硬件事件(双保险)
有些笔记本 BIOS 层面合盖也会发送 ACPI 事件,需要一起屏蔽:
创建一个mask合盖事件的udev规则 1 echo 'SUBSYSTEM=="input", KERNEL=="button/.*", ATTRS{code}=="0x01", ATTRS{value}=="0x01", RUN+="/usr/bin/logger Lid closed but ignored"' | sudo tee /etc/udev/rules.d/99-ignore-lid.rules
或者更彻底——直接不加载盖子驱动 1 sudo bash -c 'echo "blacklist button" >> /etc/modprobe.d/blacklist-lid.conf'
第三步:确保 SSHD 开机自启(以防万一重启后卡在黑屏 / GRUB)
确保sshd在启动早期就起来 1 sudo systemctl enable sshd
如果GRUB菜单导致卡住,设置自动启动 1 2 3 sudo sed -i 's/GRUB_TIMEOUT=.*/GRUB_TIMEOUT=2/' /etc/default/grub sudo sed -i 's/GRUB_TIMEOUT_STYLE=.*/GRUB_TIMEOUT_STYLE=hidden/' /etc/default/grub sudo update-grub
第四步:可选 —— 配置远程不死心
万一还是卡了,加一个watchdog 自动重启兜底:
安装watchdog 1 sudo apt install watchdog -y
配置——如果5分钟没心跳就硬重启 1 2 sudo sed -i 's/#watchdog-timeout = 0/watchdog-timeout = 300/' /etc/watchdog.conf sudo systemctl enable --now watchdog
最简单的三行命令搞定(在 Linux01 上执行):
1 2 3 sudo sed -i 's/^#HandleLidSwitch=.*/HandleLidSwitch=ignore/' /etc/systemd/logind.conf sudo sed -i 's/^#HandleLidSwitchExternalPower=.*/HandleLidSwitchExternalPower=ignore/' /etc/systemd/logind.conf sudo systemctl restart systemd-logind
第一步:HandleLidSwitch=ignore 作用: 告诉 systemd(Linux 的初始化系统)——“别管盖子” Linux 系统默认监听一个叫 HandleLidSwitch 的事件。盖子合上时,ACPI(高级电源管理)发送一个信号给内核,systemd 收到后默认执行 suspend(挂起到内存)。你盖上盖子跑远程,其实系统一直处在 “随时准备休眠” 的状态,一旦重启,启动流程走到登录界面时检测到盖子还是合着的,立刻又执行 suspend,屏幕黑了,SSHD 也停了,彻底失联。 改成 ignore 就是告诉 systemd:别管盖子,该怎么运行怎么运行。 第二步:屏蔽硬件盖子事件(双保险) 作用: 防止某些笔记本在 BIOS / 驱动层面直接发信号绕过 systemd 有些笔记本的盖子开关是直接走硬件的(ACPI button 驱动),即使 systemd 设了 ignore,内核模块 button.ko 仍然会收到盖子的按键事件并尝试休眠。blacklist button 就是直接告诉内核别加载盖子驱动,从物理上切断信号源。 注意:屏蔽 button 驱动后,笔记本的电源按钮也可能受影响,一般没问题,但如果你的笔记本电源键也是走这个驱动的,按电源键会没反应。如果遇到这种情况去掉 blacklist 那行就行。 第三步:确保 SSHD 早期启动 + GRUB 自动跳过 两个独立作用: enable sshd — 确保 SSH 服务开机自启。正常情况下是自启的,但如果你之前禁用过,需要打开。 GRUB 参数修改 — 原值 改后 作用 GRUB_TIMEOUT=10 GRUB_TIMEOUT=2 GRUB 菜单倒计时从 10 秒缩到 2 秒,不等你手动选择 (无GRUB_TIMEOUT_STYLE) GRUB_TIMEOUT_STYLE=hidden 默认不显示 GRUB 菜单,直接启动 update-grub — 把修改写入启动配置 这步解决的是:如果你之前有过异常关机(断电、强制重启),GRUB 检测到文件系统问题会停在菜单或救援模式等用户输入。合盖状态你看不到,SSHD 又没起来,就彻底失联了。设成 2 秒自动进系统,不管有没有异常。 第四步:Watchdog 硬件看门狗 作用: 终极底牌 —— 系统卡死时自动硬重启 Watchdog 是一个硬件定时器,系统正常时会定期 “喂狗”(重置计时器)。如果系统完全卡死(内核 panic、死锁),没人喂狗,计时器归零 —— 主板直接硬重启。 设 watchdog-timeout = 300 意思是:如果系统连续 300 秒(5 分钟)没反应,自动重启。这样即使前几步都失效了,最多 5 分钟机器自己就重启了,重启后 SSHD 又能连上。 优先级:最重要的是 第一步(HandleLidSwitch),解决了 90% 的问题。其他是保险措施,按需加。