当使用 umount
命令卸载磁盘时遇到 "target is busy" 错误,通常表示有进程正在占用该磁盘或其中的文件。以下是系统化的解决方案:
使用 lsof
或 fuser
命令定位正在访问磁盘的进程:
sudo lsof +f -- /mount/point # 替换为你的挂载点
# 或
sudo fuser -vm /mount/point
输出会显示进程ID(PID)和命令名称。
根据上一步的PID,手动终止进程:
sudo kill -9 <PID> # 强制终止单个进程
或批量终止所有占用进程:
sudo fuser -km /mount/point # 发送SIGKILL信号
如果无法立即终止进程,强制内核延迟卸载(当磁盘不再繁忙时自动卸载):
sudo umount -l /mount/point
注意:此操作后程序仍可能访问已卸载的文件,可能导致数据损坏,慎用。
确认卸载是否成功:
mount | grep /mount/point # 检查是否仍在挂载列表中
df -h # 查看磁盘挂载状态
bash
cd / # 切换到根目录
umount /mount/point
若问题持续,检查系统服务或内核模块:
sudo systemctl list-units --type=mount # 检查系统挂载单元
sudo lsmod | grep fuse # 检查FUSE相关模块
sync
命令确保数据写入磁盘:
bash
sync && sudo umount /mount/point
通过以上步骤,可精准定位并解决磁盘占用问题。如仍失败,需考虑重启系统或检查磁盘错误(fsck
)。