首页/系统/信创系统运维速查/关机或重启卡住的排查
常见问题65 条

关机或重启卡住的排查

关机卡住多是服务停止超时或文件系统卸载等待:看控制台提示的单元名与关机日志,针对性处理执行脚本与挂载。

信创系统运维速查系统更新于 2026-10-13

关机到底卡在哪一步

Linux 关机是 systemd 逐个停止单元、再卸载文件系统的过程。卡住基本只有两类原因:某个服务停止超时(不响应 SIGTERM,或 ExecStop 脚本自己卡住),以及文件系统卸载在等 IO 完成(网络存储链路断开时尤其明显)。控制台通常会直接打印正在等待的单元名与已等待时长,这是最有价值的一条线索。

基本信息

典型提示A stop job is running for XXX(后跟已等待时长)
日志回溯journalctl -b -1 查看上一次启动周期的结尾
关键参数单元里的 ExecStop 与 TimeoutStopSec
网络挂载NFS/CIFS 断链会长时间等待卸载
权限要求root(查看与修改单元配置)

典型使用场景

  • 执行 reboot 或 shutdown 后长时间停在 stop job 提示上
  • 虚拟机通过平台发起关机一直不返回
  • 排查是哪个服务拖慢了整条关机流程
  • NFS 挂载的服务器不可达导致关机卡死
  • 给停止慢的应用设置合理的超时上限

定位与处理

定位与处理
# 卡住时控制台会提示:A stop job is running for XXX(NNs / 1min 30s)
systemctl list-jobs                          # 当前仍在执行的单元任务
journalctl -b -1 --no-pager | tail -50       # 上一次启动周期的末尾日志
systemctl cat app-web | grep -E 'ExecStop|TimeoutStopSec'   # 停止逻辑与超时值
systemctl edit app-web                       # 用 drop-in 覆盖,不改原始单元文件
# 在打开的编辑器里写入:
# [Service]
# TimeoutStopSec=30
systemctl daemon-reload                      # 覆盖生效
systemctl list-units --type=mount            # 核对挂载单元,确认是否存在网络存储

卡点判读

现象含义处理
stop job 提示带单元名该单元停止未完成查它的 ExecStop 与 TimeoutStopSec
停在 umount 阶段文件系统卸载等待 IO检查网络存储链路与挂载选项
每次都是同一服务该服务停止逻辑有问题交研发修脚本或设超时上限
偶发且单元不同多为 IO 抖动或负载高峰结合存储层与负载记录分析
NFS 等网络挂载在网络中断时会长时间等待:挂载时评估软挂载相关选项,或在关机前先手动 umount 掉已经断链的网络存储。
直接长按电源断电有数据损坏风险:优先等超时自行结束,或者切到其他终端手动卸载卡住的挂载,最后才考虑强制断电。

易错点

  • 不看控制台提示的单元名直接重启:每次重复同一个卡点,永远定位不到
  • ExecStop 脚本写得不够健壮:脚本自身卡住会把整个关机流程拖住
  • 直接改原始单元文件:升级或重装时被覆盖,应该用 systemctl edit 做 drop-in
  • 网络存储在关机前不先卸载:存储侧已断开时关机时长完全不可控
  • 把偶发卡住当成必然故障改配置:应该结合日志与时间分布判断,避免误改

数据来源与参考

  • man 1 systemctl
  • man 5 systemd.service
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌