Linuxでアンマウントできないとき

umountやautofsを終了しようとすると、リソースがビジー状態などでアンマウントできないときがある。umount -fで強制的に行うと書いてあるがこれはNFSだけのようだ。

リソースがビジー状態とはほとんどの場合ファイルが使われているということなのでファイルを使っているプロセスを終了すればよい。

lsofを使った方法

どのプロセスがファイルを使っているかを調べるにはlsofコマンドをつかう。このコマンドを引数無しで実行するとすべての開かれているファイルが表示される。よってここからマウントポイントを探して、そのプロセスを終了させるかkillすればいい。

# lsof|grep '/sambaauto'
lsof: WARNING: can't stat() smbfs file system /sambaauto/192.168.0.12/Share Output information may be incomplete.
automount 13797 root 4r DIR 0,16 0 127019 /sambaauto
bash 15569 grape cwd DIR 0,26 0 10 /sambaauto/192.168.0.2/Share/Ts.tar
bash 17960 root cwd DIR 0,16 0 127019 /sambaauto
automount 18959 root 4r DIR 0,16 0 127019 /sambaauto

上の例だと、automountはマウントプロセスなので無視して、それ以外の2つのbashを終了させればよい。面倒な場合はkill -9で強制的に終了できる。

# kill -9 15569 17960

これでアンマウントできる。

fuserを使った方法

$ fuser -va /mnt
このコマンドは/mnt以下にアクセスしているすべてのプロセスを表示する。

$ fuser -k -TERM -m /mnt
このコマンドはマウントポイント/mnt以下にアクセスしているプロセスをすべてTERMシグナルでkillする。

Leave a Reply

Your email address will not be published. Required fields are marked *

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)