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

私がそこにいたかどうかは覚えていませんが、試しましたが、あなたは正しいです、これは起こりました。
-xralf

回答:


14

これは、一部のプロセスが、マウントポイントの下に作業ディレクトリまたは開いているファイルハンドルを持っていることを意味します。最善の方法は、問題のあるプロセスを終了するか、作業ディレクトリを変更するか、マウントを解除する前にファイルハンドルを閉じることです。

ただし、Linuxには代替手段があります。を使用するumount -lと、「遅延」アンマウントが呼び出されます。ファイルシステムは引き続きマウントされますが、既に使用しているプロセスを除いて、表示したり使用したりすることはできません。問題のプログラムが(なんらかの手段で)終了すると、システムはファイルシステムのマウントを「終了」します。


2
開いているファイルハンドルがあり、終了する必要があるプロセスを見つける方法はありますか?
-xralf

4
使用することlsofがおそらく最良の方法です。
バハマ

1
例えばlsof | grep loop0
-xralf

いいえ、マウントポイントのgrepです。下にすべてのファイルをリストする必要があります。マウントポイントの下に作業ディレクトリがあるだけのものを表示するとは思わないので、完璧な方法ではありません。
バハマ

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

「通常の解決策」を考えると、コンソールウィンドウで実行しているシェルには、そのデバイスのファイルシステムに現在の作業ディレクトリとしてディレクトリが存在することを意味します。

Linux、および一般的なUnixは、プロセスがそのファイルシステムに現在の作業ディレクトリを持っている場合、ファイルシステムをマウントしたままにしておくことを非常にひどく望んでいます。

コンソールウィンドウとその内部で実行されているシェルを強制終了するのcd/mntはなく、コンソールウィンドウで使用して、ディレクトリ内またはディレクトリ下から抜けることができます。


0

この質問は非常に古いものですが、回答として共有するデバイスのアンマウントを妨げる可能性がある状況を発見しました。

あなたがマシン上でホストされているNFS共有を持っており、それらのNFS共有のいずれかを使用すると、アンマウントしようとしているデバイスによってバックアップされている、あなたがそれらの共有を停止する必要があります場合は(最高のNFSサービスを停止することによって行われ、例えばsudo service nfs-kernel-server stopUbuntuの最近のバージョンに)。NFSサーバーはlsofまたはfuserに表示されない場合があり、問題の特定が困難になる場合があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.