Linux umount 报 target is busy:当前终端还在挂载目录里
Linux 卸载报 target is busy,关闭原终端才成功时,检查 shell 工作目录及其他占用。区分普通卸载、lazy 分离和加密映射关闭,保留正常收尾与恢复边界。
复制完文件后执行 umount,却收到 target is busy。关闭原来的终端后能卸载,另开一个终端却无效时,先检查原终端的工作目录:shell 只要仍停在目标文件系统里,就可能持有使卸载失败的引用,不需要正在读写文件。
这条路径适用于 Linux 上的普通文件系统卸载,包括先挂载加密映射、再进入挂载目录操作的场景。正在使用的文件、子挂载和其他进程也能造成忙碌;看到同一错误,不能直接认定只有一个 shell。
先离开挂载点,保留原终端
在原来的终端检查当前目录。以下挂载点是示例,必须替换为实际目标:
pwd
cd /
sudo umount /data/test/mount_point
cd / 要在持有工作目录的那个 shell 中执行。第二个终端换了目录,只改变第二个 shell,不会让第一个终端释放引用。在挂载目录里执行 sudo umount 也不会改变调用它的 shell 的工作目录;增加权限无法消除这项占用。
卸载前确认写入已经完成,应用按其要求停止或刷出数据,其他用户知道目录将不可用。成功卸载后,原路径仍可能存在,但它指向挂载点下面的底层目录。不要在该目录中继续写入并以为仍在写那块盘。
脚本需要进入挂载目录工作时,应在卸载前显式退出这个目录,或者在有明确生命周期的子 shell 内完成操作。不能只在另一条后台命令中执行 cd,期待父 shell 的目录也随之改变。
仍然 busy,读取实际占用者
安装了 psmisc 的 Linux 系统可以用 fuser 查看目标文件系统的占用。下面只读取信息,不向进程发送信号:
sudo fuser -vmM /data/test/mount_point
-m 查询该文件系统上的占用,并不只检查挂载点这个目录本身;-M 要求传入的是挂载点,避免拼错路径后误查整块其他文件系统。-v 显示 PID、命令和访问类型。ACCESS 中的 c 表示工作目录,f 或 F 表示打开文件等访问,不能把每一行都当作 shell 占用。
若出现多个 shell,应分别让它们离开目标目录。编辑器、备份程序或业务服务仍在使用文件时,按对应程序的正常方式完成工作、关闭文件或在维护窗口停服务。卸载可能中断读写,不能根据进程名看起来熟悉就强制结束它。
不要为这一步加 -k:该选项默认发送 SIGKILL,可能同时终止多个访问该文件系统的进程,也会绕过应用收尾。没有占用输出也不是完整排除证据;权限、容器和不同挂载命名空间会限制 fuser 的可见范围。应在能看到实际挂载与占用进程的环境中继续查,而不是把工具装成 SUID 来凑结果。
不把 lazy 或 force 当作常规修复
umount -l 会先从目录树分离挂载,在引用释放后才完成相关清理。路径看似已卸载,不表示旧进程不再访问文件系统;随后关闭加密设备仍可能失败,也不能因此拔盘。
umount -f 主要针对无法访问的网络文件系统等特殊场景,并不保证强制卸载成功。普通本地文件系统因 shell 工作目录而 busy 时,先退出目录并释放占用,比叠加这些选项更容易确认实际状态。
这里不需要重新格式化加密容器,也不需要重新创建密钥。加密映射与其上挂载的文件系统是不同层次,应在相关文件系统正常卸载、其他使用者也已释放后,再按原有流程关闭映射。仅看到挂载点路径空了,不能证明映射已可安全关闭。
用正常卸载结果验收
再次执行针对同一挂载点的普通卸载,确认命令成功,并核对当前环境的挂载记录已没有该挂载。加密场景还需确认对应映射已按预定流程关闭;业务数据应在下一次受控挂载后仍可正常读取。
若卸载失败,保留原挂载与占用信息,继续定位,不重复格式化或删除数据。若需要恢复访问,按先前保存的设备、映射与挂载参数重新挂载,再让服务恢复工作。已中断的任务和已经写入的数据,不能通过重新挂载自动回退。


