取消挂载 umount 时出现的 “Device is busy”
2015-07-01 15:40
218 查看
在 Linux 下 umount 挂载的优盘或者移动硬盘的时候,经常会出现 “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 参数显示所有使用指定文件系统的进程,后面可以跟挂载点,或是dev设备,-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” 的问题~
方法二:
使用umount命令可以卸载文件系统。利用设备名或挂载点都能umount文件系统,不过最好还是通过挂载点卸载,以免使用绑定挂载(一个设备,多个挂载点)时产生混乱。下面两条命令分别通过设备名和挂载点卸载文件系统,同时输出详细信息:
1.# umount -v /dev/sda1 通过设备名卸载
2./dev/sda1 umounted
3.# umount -v /mnt/mymount/ 通过挂载点卸载
4./tmp/diskboot.img umounted
如果设备正忙,卸载即告失败。卸载失败的常见原因是,某个打开的shell当前目录为挂载点里的某个目录:
# umount -v /mnt/mymount/
umount: /mnt/mymount: device is busy
umount: /mnt/mymount: device is busy
对付系统文件正忙的另一种方法是执行延迟卸载:
延迟卸载(lazy unmount)会立即卸载目录树里的文件系统,等到设备不再繁忙时才清理所有相关资源。卸载可移动存储介质还可以用eject命令。下面这条命令会卸载CD并弹出CD:
其实,错误不在 WIndows 也不在 Linux,无法卸载移动设备的原因,是因为系统中还有程序在霸占着移动设备上的文件,如果冒然强制卸载,可能会导致数据丢失和设备损坏,“Device is busy” 是一种保护措施。
方法一:
既然知道是有程序霸占,找出这个程序再处理一下就好了。 fuser 这个小程序可以派上用场,基本上每个发行版都会带有 fuser 这个工具。
fuser 可以显示出当前哪个程序在使用磁盘上的某个文件、挂载点、甚至网络端口,并给出程序进程的详细信息。
假设无法卸载的设备为 /media/USB,运行下列命令即可:
$ fuser -m -v /media/USB/
用户 进程号 权限 命令
/media/BAK/:
galeki 335 ..c.. gqview
-m 参数显示所有使用指定文件系统的进程,后面可以跟挂载点,或是dev设备,-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” 的问题~
方法二:
使用umount命令可以卸载文件系统。利用设备名或挂载点都能umount文件系统,不过最好还是通过挂载点卸载,以免使用绑定挂载(一个设备,多个挂载点)时产生混乱。下面两条命令分别通过设备名和挂载点卸载文件系统,同时输出详细信息:
1.# umount -v /dev/sda1 通过设备名卸载
2./dev/sda1 umounted
3.# umount -v /mnt/mymount/ 通过挂载点卸载
4./tmp/diskboot.img umounted
如果设备正忙,卸载即告失败。卸载失败的常见原因是,某个打开的shell当前目录为挂载点里的某个目录:
# umount -v /mnt/mymount/
umount: /mnt/mymount: device is busy
umount: /mnt/mymount: device is busy
对付系统文件正忙的另一种方法是执行延迟卸载:
# umount -vl /mnt/mymount/ 执行延迟卸载 |
# eject /dev/cdrom 卸载并弹出CD |
相关文章推荐
- 关于淘宝刷单的问题
- Linux之文件权限
- Obtain Diesel engine Designer watches can be bought in the many most up-to-date styles and designs
- curl和libcurl的区别简介
- hibernate学习笔记之四(Hibernate中的类型)
- Java基础:类的实例化、static、父类构造函数执行顺序
- android 网络编程之网络通信几种方式实例分享
- linux ftp配置说明
- iOS button被view遮住,想点击怎么破
- Diesel watches are sometimes manufactured so well that even a specialist wants unique equipment
- ehCache 配置
- io调度算法介绍
- Win10新版本中Insider Hub会员应用消失不见了怎么添加
- Option可选值可选值(二)
- Option可选值可选值(二)
- wireshark的pcapng的文件格式
- ngrok 本地反向代理工具
- javascript---常用正则
- XGBoost:二分类问题
- Iphone设置http代理使用Fiddle抓包