“目标忙”本质是进程正访问挂载点下的文件、目录或将其设为cwd/root/mem等,应先用sudo lsof /mnt/data或sudo lsof +D /mnt/data精准定位占用进程,再依类型分类处理:shell cwd占用可cd退出,服务类优先systemctl stop,DEL文件需重启进程,应急时用umount -l延迟卸载。

取消挂载失败提示“目标忙”(target is busy),说明有进程正访问该挂载点下的文件、目录,或将其设为当前工作目录(cwd)、根目录(root)、内存映射文件(mem)等。关键不是直接强卸,而是先定位、再分类处理。
快速确认挂载点和设备
执行以下命令,明确你要操作的目标:
-
df -h /mnt/data:查出挂载点对应的实际设备(如
/dev/sdb1) - mount | grep /mnt/data 或 findmnt /mnt/data:确认是否真已挂载、文件系统类型及挂载选项
- lsblk -f:直观查看设备、分区、文件系统、挂载点的层级关系
精准定位占用进程
用 lsof 是最可靠方式,比 ps aux | grep 更准确:
- sudo lsof /mnt/data:列出所有直接打开该路径或以其为 cwd/root 的进程
- sudo lsof +D /mnt/data:递归扫描整个挂载点下所有子目录(适合大目录,但稍慢)
-
sudo lsof | grep '/dev/sdb1':若已知设备名,可全局过滤(需先用
df确认)
重点关注输出中的 PID、COMMAND、FD(如 cwd、mem、DEL)和 NAME 列。例如:bash 12345 cwd DIR /mnt/data 表示该 shell 正在该目录下工作。
按占用类型分类处理
不同场景应采取不同策略,避免误杀关键进程:
-
终端 shell 的 cwd 占用:只需在对应终端中执行
cd /或关闭该终端即可 -
编辑器或文件管理器打开文件:如
vim、gedit、nautilus,请通知用户保存并退出,不要直接 kill -
后台服务写入日志或读取数据:如 nginx、mysql、prometheus,优先使用
systemctl stop servicename - 已删除但句柄未释放的文件(DEL):常见于日志轮转后程序未重载,通常需重启对应服务才能释放
安全卸载的几种方式
确认占用可终止后,按风险由低到高选择:
-
优雅终止进程:用
kill -15 <PID>发送 SIGTERM,让进程自行清理资源 -
批量温和清理:
sudo fuser -k /mnt/data向所有占用进程发 SIGTERM(慎用,可能影响多个服务) -
懒卸载(推荐应急):
sudo umount -l /mnt/data立即解除挂载点,系统后台等待引用释放后再清理设备 -
不推荐操作:避免
umount -f(仅对 NFS 有效且有风险)、避免无差别kill -9,尤其对数据库、日志类进程可能导致损坏


















