zoukankan      html  css  js  c++  java
  • 取消挂载 umount 时出现的 “Device is busy”

    在 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设备 ( Thanks lisir :),-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 /mnt/net1
    umount: /mnt/net1: device is busy.
            (In some cases useful info about processes that use
             the device is found by lsof(8) or fuser(1))

    这种问题解决方案:

    一、查找使用这个文件的进程和命令,具体的操作代码

    [root@localhost ~]# lsof |grep /mnt/net1
    lsof: WARNING: can't stat() cifs file system /mnt/net1
          Output information may be incomplete.
    bash      18841      root  cwd   unknown                                            /mnt/net1/TDDOWNLOAD/软件 (stat: No such device)

    二、然后执行ps命令可以查找执行此进程的命令

    [root@localhost ~]# ps -ef|grep 18841
    root     18841 18839  0 Nov29 pts/2    00:00:00 /bin/bash -l
    root     29496 25604  0 16:26 pts/0    00:00:00 grep 18841

    三、强行结束无关进程

    [root@localhost ~]# kill -9 18841

    四、然后卸载相关挂载

    [root@localhost ~]# umount /mnt/net1

    五、然后可以在功过mount命令进行查看。

  • 相关阅读:
    《实战Java高并发程序设计》读书笔记一
    《实战Java高并发程序设计》读书笔记二
    SprintBoot学习(三)
    SprintBoot学习(二)
    SprintBoot学习(一)
    jQuery学习(三)
    jQuery学习(二)
    jQuery学习(一)
    利用activeX控件在网页里自动登录WIN2003远程桌面并实时控制
    上传读取Excel文件数据
  • 原文地址:https://www.cnblogs.com/shangbolei/p/4372340.html
Copyright © 2011-2022 走看看