解决在Linux 下umount 挂载的U盘或者移动硬盘时出现的“Device is busy”

转载自:http://www.linuxdiyf.com/viewarticle.php?id=67336

在 Linux 下 umount 挂载的U盘或者移动硬盘的时候,经常会出现 “Device is busy” 的提示,哦~真让人恼火,在 Windows 下的那个无法卸载移动设备的问题,竟然也窜到了 Linux 下 ……
其实,错误不在 WIndows 也不在 Linux,无法卸载移动设备的原因,是因为系统中还有程序在霸占着移动设备上的文件,如果冒然强制卸载,可能会导致数据丢失和设备损坏,“Device is busy” 是一种保护措施。
既然知道是有程序霸占,找出这个程序再处理一下就好了。 fuser 这个小程序可以派上用场,基本上每个发行版都会带有 fuser 这个工具。 fuser 可以显示出当前哪个程序在使用磁盘上的某个文件、挂载点、甚至网络端口,并给出程序进程的详细信息。

假设无法卸载的设备为 /media/USB,运行下列命令即可:

$ fuser -m -v /media/USB/ 

用户 进程号 权限 命令
/media/BAK/: galeki 335 …c… gqview

-m 参数表明指定的路径是一个挂载点
-v 参数给出详细的输出
可以看出,原来是 gqview 这个程序还在霸占着移动设备,fuser 还给出了程序的进程号,知道了进程号,你就可以随便怎么处置这个程序了。

另外你也可以添加一个 -k 参数:

$fuser -m -k /media/USB/ 

这招自动把霸占着 /media/USB/ 的程序杀死。如果你不是很明确是否要杀死所有霸占设备的程序,你还可以加一个 -i 参数,这样每杀死一个程序前,都会询问,例:

$ fuser -m -v -i -k /media/BAK/ 

用户 进程号 权限 命令
/media/BAK/: galeki 371 …c… gqview 杀死进程 371 ? (y/N)

很顺利的解决了 “Device is busy” 的问题。

另外:lsof(list open files)是一个可以查看当前系统打开文件的工具,利用它也可以查看打开U盘挂载点下哪些文件正在读取,例:

$lsof | grep ‘/mnt/udisk/’

列出某个用户打开的文件信息

$lsof  -u username

但是,有时可能出现U盘挂载点下无文件被打开,U盘仍被某些进程占用并造成无法umount卸载,因此最好还是使用fuser工具较好。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值