umount-设备忙


14

有时当我想卸载设备时,例如

sudo umount /dev/loop0

我会收到消息

umount: /mnt: device is busy.
        (In some cases useful info about processes that use
         the device is found by lsof(8) or fuser(1))

我通常通过关闭控制台窗口(在我的情况下为xfce4-terminal),然后关闭来解决此问题umount

这个问题是什么意思?有更聪明的解决方案吗?


2
例如,如果您仍在该设备安装目录中的外壳中,则会发生这种情况。
klapaucius 2011年

我不记得我是否在那儿,但我尝试过,而您是对的,这件事发生了。
xralf 2011年

Answers:


14

这意味着某些进程在挂载点下方具有工作目录或打开的文件句柄。最好的办法是结束令人反感的过程,更改其工作目录或在卸载之前关闭文件句柄。

但是在Linux上还有另一种选择。使用umount -l称为“惰性”卸载。文件系统仍将被挂载,但是您将无法看到或使用它,除了已经在使用它的进程。当有问题的程序退出时(通过任何方式),系统将“完成”卸载文件系统。


2
有没有办法找出哪个进程具有打开文件句柄并应终止?
xralf 2011年

4
使用lsof可能是最好的方法。
bahamat 2011年

1
例如lsof | grep loop0
xralf 2011年

不,grep是挂载点。它应该在下面列出所有文件。我认为它不会显示仅在挂载点下具有工作目录的内容,因此这不是一个完美的方法。
bahamat 2011年

7

您还可以fuser使用已挂载的文件系统来杀死所有进程。

fuser -cuk /mnt

选项:

-c     
    Same as -m option, used for POSIX compatibility.

-u, --user
    Append the user name of the process owner to each PID.

-k, --kill
    Kill  processes accessing the file. Unless changed with -SIGNAL, SIGKILL is sent. An fuser process
    never kills itself, but may kill other fuser processes. The  effective  user  ID  of  the  process
    executing fuser is set to its real user ID before attempting to kill.kill.

-m NAME, --mount NAME
    NAME specifies a file on a mounted file system or a block device that is  mounted.  All  processes
    accessing  files  on  that  file  system  are  listed.   If  a  directory file is specified, it is
    automatically changed to NAME/. to use any file system that might be mounted on that directory.

检查自己在explainshell


3

给定您的“常规解决方案”,这意味着您在控制台窗口中运行的Shell在该设备上的文件系统中具有一个目录,作为其当前工作目录。

如果一个进程在文件系统中有当前工作目录,那么Linux和一般的Unix都非常希望保留该文件系统的安装。

您可以仅cd在控制台窗口中使用以退出目录中或目录下的目录,/mnt而不是杀死控制台窗口以及其中运行的shell。


0

我发现了一种情况,即使这个问题非常古老,也可能会干扰我将作为答案共享的设备的卸载。

如果您的计算机上托管了NFS共享,并且所有这些NFS共享都由您要卸载的设备支持,则必须停止共享它们(最好通过停止NFS服务来完成,例如,sudo service nfs-kernel-server stop在最新版本的Ubuntu上) )。NFS服务器可能不会在lsof或融合器中显示,这可能会使问题难以识别。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.