为什么卸载时总提示“device or resource busy”?

卸载失败是因为还有进程占用着这个文件系统。先找出占用者、结束它,再重新卸载。

Linux进程磁盘故障排查lsof 文件占用诊断挂载中风险
先对挂载点执行 fuser -vm,看看是哪个进程占着这块文件系统,把它关掉或结束之后再卸载。

快速开始

只有还有东西在用这个文件系统时,umount 才会失败:比如当前目录就停在里面某个文件夹的终端、打开着文件的编辑器或文件管理器、正在播放的播放器,或者后台的同步、索引进程。内核不会把这些进程脚下的文件系统直接抽走。解决思路每次都是一样的——找出占用者、让它放手、再试一次,完全不需要重启。

症状

?终端里卸载时返回 “target is busy” 或 “device or resource busy”,桌面上的弹出按钮提示卷正在使用中,明明关掉了文件管理器,挂载表里却还能看到这块设备。

先查出是谁占用了挂载点

第一步做这个,是因为报错的对象不是硬盘,而是还在用这个文件系统的东西。这条检查会列出进程号、所属用户以及挂载点内部被打开的具体文件,让你分得清是自己停在那个目录里的终端,还是不该乱动的系统服务。如果它一点输出都没有,说明占用者不是普通的打开文件,接着看下一步。

用 fuser -vm 找出占用挂载点的进程,关闭它们(或退出停在该目录的终端)后再卸载。

命令
$ fuser -vm /media/usb
▾ 撤销
撤销
$ null

检查是否有人占着已删除的文件

文件被删除以后,只要还有进程打开着它,这个文件描述符依然算作文件系统上的一处占用,所以你看着已经关掉的程序或轮转过的日志,可能就是背后那个看不见的占用者。如果输出里出现了挂载点下面的路径,那条记录就是拦路的,除非对应进程退出或被结束,否则卸载会一直失败。没有匹配项,就直接进入下一步去结束进程。

当 df 显示磁盘满但 du 却找不到大文件时,多半是有进程还握着已删除的文件;lsof +L1 能把它们和占用进程一起列出来。

命令
$ sudo lsof +L1

先温和结束,不行再强杀

先发普通的终止信号,让程序有机会把缓冲区写回去、把文件关干净;如果几秒之后它还在,再升级成强制终止。判断是否奏效的办法,是回头再查一次挂载点上的占用情况:列表空了,文件系统就自由了。强制终止可能丢掉还没写进目标设备的资料,所以留到最后再用。

按 PID 结束指定进程:先用普通 kill(SIGTERM),进程拒不退出时才用 kill -9(SIGKILL)。

命令
$ kill 12345

不想找进程号就按名字结束

当占用者是一整个会不断拉起子进程的程序,或者你有好几个终端都停在那个挂载点里、不想一个一个关时,按名字匹配最省事,一次把同名的进程全部结束。风险也在这里:名字一定要写准,写得太宽泛就可能误伤别的程序。确认办法和前面一样,再查一次挂载点的占用情况,应该已经没有谁占着它了。

Linux用 pkill 按名称结束进程低风险步骤 4可选

使用 pkill 向所有名称匹配的进程发送终止信号,无需先查找 PID。

命令
$ pkill firefox
!强制结束进程可能丢掉还没写入设备的资料,所以先保存并退出程序,实在不行再用强杀。也不要批量结束系统服务或者自己不认识的进程——下手前先弄清这个进程是谁的。

如何确认已解决

对同一个挂载点再卸载一次。成功的话不再报错、退出码为 0,设备从挂载表里消失,读写指示灯也不再闪,这时候拔线才安全。

一键全部撤销

上面每一条命令都可以撤销。按此顺序执行即可全部还原。

一键全部撤销
$ null

执行前请先确认——部分步骤之间可能并非相互独立。

来源

最后验证: 2026-09-22

相关指南