【samba】umount:**** target is busy. ubuntu24.04 卸载挂载点
当你看到 target is busy
,说明仍有进程在使用该挂载点或你当前的 shell 就位于该目录下。可以按下面步骤排查并强制卸载:
1. 确保不在挂载目录下
先切换到其它目录,避免当前 shell 占用:
cd ~
2. 查找占用该挂载点的进程
-
使用 fuser
sudo fuser -m /media/zhangbin/DATA/HuaSongs
它会列出占用该挂载点的 PID 列表。
-
使用 lsof
sudo lsof +D /media/zhangbin/DATA/HuaSongs
或者
sudo lsof /media/zhangbin/DATA/HuaSongs
列出打开该目录或其下文件的所有进程与文件句柄。
3. 终止占用进程
-
如果确认可以杀掉它们:
sudo fuser -km /media/zhangbin/DATA/HuaSongs
这会向所有占用该挂载点的进程发送
SIGKILL
,请谨慎使用。 -
或者针对单个 PID:
sudo kill <PID> # 如果进程没响应再 sudo kill -9 <PID>
4. 再次卸载
sudo umount /media/zhangbin/DATA/HuaSongs
如果还是提示 busy,可以使用 懒卸载(detach):
sudo umount -l /media/zhangbin/DATA/HuaSongs
-l
(lazy):让挂载点立即对新进程不可见,但内核会在资源空闲后彻底清理。
或者强制卸载(在某些系统对 CIFS 有效):
sudo umount -f /media/zhangbin/DATA/HuaSongs
5. 验证
mount | grep HuaSongs
如果没有输出,说明已成功卸载。
按照以上步骤,就能解除“target is busy”导致的卸载失败问题。
我的操作
sudo fuser -m /media/zhangbin/DATA/HuaSongs
/media/zhangbin/DATA/HuaSongs: 1100864 1145941c 1146181c 1146190c
看到这几个 PID 正在占用挂载点:
1100864 1145941c 1146181c 1146190c
下面有两种常用方式,任选其一即可清理占用并卸载:
方法一:用 fuser 一步终结并卸载
-
终止所有占用进程
sudo fuser -km /media/zhangbin/DATA/HuaSongs
这会对所有使用该目录的进程发送 SIGKILL。
-
卸载
sudo umount /media/zhangbin/DATA/HuaSongs
方法二:手动杀进程再卸载
-
切换目录(避免 shell 自己也占用)
cd ~
-
逐个杀掉 PID
sudo kill 1100864 1145941 1146181 1146190 # 如果有进程不响应,再用 -9 强制杀 sudo kill -9 1100864 1145941 1146181 1146190
-
卸载
sudo umount /media/zhangbin/DATA/HuaSongs
如果仍然提示“busy”
-
懒卸载(挂载点对新进程立即不可见,后台清理):
sudo umount -l /media/zhangbin/DATA/HuaSongs
-
强制卸载(针对 CIFS 有时有效):
sudo umount -f /media/zhangbin/DATA/HuaSongs
执行完后,用 mount | grep HuaSongs
验证是否已卸载。这样就可以清除“target is busy”导致的卸载失败问题了。