在 Linux 下 umount 挂载的优盘或者移动硬盘的时候,经常会出现 “Device is busy” 的提示,哦~真让人恼火,在 Windows 下的那个无法卸载移动设备的问题,竟然也窜到了 Linux 下 ……
其实,错误不在 WIndows 也不在 Linux,无法卸载移动设备的原因,是因为系统中还有程序在霸占着移动设备上的文件,如果冒然强制卸载,可能会导致数据丢失和设备损坏,“Device is busy” 是一种保护措施。
既然知道是有程序霸占,找出这个程序再处理一下就好了。 fuser 这个小程序可以派上用场,基本上每个发行版都会带有 fuser 这个工具。
fuser 可以显示出当前哪个程序在使用磁盘上的某个文件、挂载点、甚至网络端口,并给出程序进程的详细信息。
假设无法卸载的设备为 /media/USB,运行下列命令即可:
-m 参数表明指定的路径是一个挂载点显示所有使用指定文件系统的进程,后面可以跟挂载点,或是dev设备 ( Thanks lisir :),-v 参数给出详细的输出,可以看出,原来是 gqview 这个程序还在霸占着移动设备,fuser 还给出了程序的进程号,知道了进程号,你就可以随便怎么处置这个程序了。
另外你也可以添加一个 -k 参数:
这招自动把霸占着 /media/USB/ 的程序杀死。如果你不是很明确是否要杀死所有霸占设备的程序,你还可以加一个 -i 参数,这样每杀死一个程序前,都会询问:
很顺利的解决了 “Device is busy” 的问题~
is-Programmer 是一个面向 Linux 爱好者与程序员的 Blog 系统,具有简洁的风格,方便的代码高亮和数学公式插入功能,适合撰写学习笔记和技术文档。
Host by is-Programmer.com | Power by Chito 1.3.3 beta
2007年11月16日 02:55 这个不错。
2007年11月16日 03:51 不错,昨天碰到了这个问题,愣是没有解决,最后只好强行拔出了。 收藏了...
2007年11月16日 03:55 超实用,谢啦~
2007年11月16日 05:53 不錯喔~ 記下~
2007年11月17日 05:42 -m show all processes using the named filesystems ===================================================== 上面关于-m的说法错了,应该是显示所有使用指定文件系统的进程 后面跟的,既可以是挂载点,也可以是dev设备,如/dev/sda1等等。
2007年11月17日 06:26 @lisir: 谢谢指正~已经修正
2007年11月25日 20:43 lsof
2008年1月23日 06:11 呵呵,这个不错,支持一下
2008年1月29日 00:09 这招有用
2008年8月15日 03:18 恩 比windows的方便多了 windows下必须对系统进程熟悉之后才能一眼看出 是那个进程在用USB设备。。。