在银河麒麟桌面版系统上,点击关机后屏幕变暗、电源灯不灭、风扇依然旋转——这种看似死机的状态,实际上只是关机流程被某个后台进程卡住了。解决方法并不复杂,但需要按顺序操作:先缩短 systemd 的超时等待时间,禁用混合关机机制,清理残留的更新锁和进程,最后如果仍然无效,切换到 TTY 执行 sync 后再强制关机。

你可能会遇到这种情况:点击关机后,屏幕变暗,但电源灯就是不灭,风扇还在呼呼转,硬盘灯偶尔闪一下。这说明系统的关机流程被阻塞了,服务停止或文件系统卸载阶段没能顺利走完,电源自然也无法真正切断。这是银河麒麟关机无法断电的典型表现。
检查并缩短 systemd 关机超时阈值
为什么关机要等那么久?因为 systemd 默认给每个服务预留了 90 秒的停止等待时间。一旦有某个服务响应缓慢,整个流程就得陪着等待。这个设置显然过于保守,我们需要主动调低来加速银河麒麟关机过程。
第一步,打开终端,执行 sudo vim /etc/systemd/system.conf。
第二步,找到以 #DefaultTimeoutStopSec=90s 开头的那一行,去掉开头的 # 取消注释,把 90s 改成 10s,整行变成 DefaultTimeoutStopSec=10s。
第三步,保存退出后,运行 sudo systemctl daemon-reload 使配置生效。
关键点在于:只要在关机前执行过 sync,或者系统没有正在写入关键日志,这样做不会导致数据丢失。调低后,下次关机时 systemd 就不会傻等 90 秒,而是 10 秒内强制终止无响应的服务,从而解决银河麒麟关机卡死问题。
禁用快速启动(Hybrid Boot)机制
银河麒麟桌面版默认启用了一种类似 Windows 的混合关机逻辑——它尝试把内核态上下文写入 swap 分区,下次开机直接加载,省去初始化时间。但问题在于,如果 swap 不可用或写入失败,关机就会进入无限等待状态,导致银河麒麟关机无法完全断电。
执行命令:sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target。
这条命令会屏蔽所有休眠相关的目标单元,彻底关闭混合关机路径,强制系统走纯软件关机流程,不再依赖 swap 分区,有效避免因混合关机机制引发的关机阻塞。
清理残留更新锁与终止阻塞进程
图形界面关机卡死,十有八九是 kylin-software-center 或 apt 后台更新进程没有退出干净。它们会持有 shutdown.target 屏障,让系统一直等待,形成银河麒麟关机缓慢的常见原因。
先清除锁文件:在终端中运行 sudo rm -f /tmp/lock/kylin-update.lock。
然后杀掉用户级更新进程:运行 killall -u $USER kylin-software-center apt。注意不要加 -9 参数,那样会破坏 apt 数据库的一致性,温和地终止即可。
最后检查是否还有残留:执行 ps aux | grep -E "(kylin|apt|update)" | grep -v grep。如果输出不为空,记下对应的 PID,手动 kill PID 即可。
强制同步后执行底层关机
如果以上步骤都试过还是无效,而且你确认磁盘仍在读写(比如硬盘灯狂闪),那说明缓存还没落盘。这时候直接断电,数据损坏的风险不小。必须先确保所有数据写入磁盘,才能安全地强制关闭银河麒麟系统。
按 Ctrl + Alt + F2 切换到 TTY 终端,输入用户名和密码登录。连续执行三次 sync,然后运行 sudo poweroff -f。
注意,这里的 -f 参数是必需的,它会跳过服务优雅终止阶段,直接强制关机。但因为已经 sync 了三次,文件系统的安全性是有保障的,这也是解决银河麒麟关机无法断电的终极手段。
