DataWizardess 2025-07-28 04:35 采纳率: 99.3%
浏览 22
已采纳

问题:系统在执行 reached target shutdown 时卡住,无法正常关机

**问题描述:** 系统在执行“Reached target Shutdown”时卡住,导致无法正常关机。此问题常见于基于 systemd 的 Linux 发行版,表现为关机流程停滞,需强制断电。常见原因包括服务未正确停止、设备挂载未释放、驱动兼容性问题或内核模块未能正常卸载。排查时应检查系统日志(journalctl)、查看关机超时服务、尝试排查挂载点是否异常,以及确认第三方模块或驱动是否干扰关机流程。
  • 写回答

1条回答 默认 最新

  • 请闭眼沉思 2025-10-22 01:18
    关注

    1. 问题背景与现象描述

    在基于 systemd 的 Linux 系统中,关机流程通常由一系列目标(target)单元控制,其中 Reached target Shutdown 表示系统已进入关机状态,正在执行最终的关闭操作。当系统在此阶段卡住时,用户将无法正常完成关机流程,通常只能通过强制断电或重启来解决。该问题常见于服务器、桌面系统及嵌入式设备中。

    常见表现包括:

    • 屏幕停留在“Reached target Shutdown”或“Stopping...”状态
    • 系统长时间无响应,需手动断电
    • 日志中出现超时或无法停止的服务记录

    2. 可能原因分析

    造成此类关机卡顿的原因多样,主要包括以下几类:

    原因分类详细描述典型示例
    服务未正确停止某些服务在关机前未完成退出流程数据库服务、容器服务(如 Docker)未正常关闭
    设备挂载未释放存在未卸载的文件系统或网络挂载点NFS 挂载、LVM 卷未正确卸载
    驱动或模块兼容性问题第三方驱动或内核模块未能正常卸载NVIDIA 显卡驱动、专有硬件驱动
    系统配置错误systemd 配置不当或服务依赖错误TimeoutStopSec 设置过短、依赖关系冲突

    3. 排查步骤与流程图

    为系统性地排查该问题,可按照以下流程进行诊断:

    graph TD A[开始] --> B{是否可进入系统?} B -->|是| C[查看系统日志] B -->|否| D[尝试进入单用户模式] C --> E[journalctl -b -1] E --> F{是否有超时服务?} F -->|是| G[禁用或调整服务] F -->|否| H[检查挂载点] H --> I{是否发现未卸载设备?} I -->|是| J[手动卸载并调整fstab] I -->|否| K[检查第三方驱动] K --> L[移除或更新驱动] L --> M[完成]

    4. 日志分析与关键命令

    使用 journalctl 是排查此类问题的核心手段。以下为常用命令示例:

    
    # 查看上次关机日志
    journalctl -b -1
    
    # 查看当前运行的挂载点
    mount
    
    # 查看 systemd 中关机目标的依赖关系
    systemctl list-dependencies shutdown.target
    
    # 查看所有服务的停止超时时间
    systemctl --all --type=service | grep -i timeout
        

    5. 常见解决方案汇总

    针对不同原因,可采取以下解决措施:

    • 调整服务停止超时时间: 在服务单元文件中添加 TimeoutStopSec=30s 或更长
    • 手动卸载异常挂载点: 使用 umount -f 强制卸载
    • 禁用第三方驱动: 删除或禁用 /etc/modprobe.d/ 中的驱动配置
    • 更新内核或系统: 有时是已知的 bug,升级可修复
    • 临时绕过关机卡顿: 修改 /etc/default/grub 添加 acpi=force 参数
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 10月23日
  • 创建了问题 7月28日