linux umount 时出现device is busy 的处理方法–fuser

事情是这样的:由于/目录磁盘空间不足,新建了个LVM分区,欲挂载在/home目录,于是尝试直接挂载,竟然挂载成功了,然而,/home目录下的数据却没了,数据应该没丢尝试取消挂载,但是提示device is busy,所以就用下面的方法恢复了

fuser -m -v -i -k /home && umount /dev/xxxx

 

原文地址:linux umount 时出现device is busy 的处理方法–fuser

当任何目录有 mount, 然后有程序使用/挂在那个目录上的话, 就没有办法 umount 掉, 於 umount 时会出现 Device is busy 的讯息.

要怎麼找出是哪个程序挂在那个目录上? 然后去把那个程式砍掉呢?

使用 fuser 的指令

那要怎麼找出是哪个程式挂在那个目录上?可以使用 fuser – identify processes using files or sockets

假设现在 mount 起来的目录是 /media/share

* 查询: fuser -m /media/share
* 显示: /media/share: 25023c

就代表是 process 25023(pid) 有使用到此目录, 后面 c 代表的意思可参考下述:

* c: current directory.
* e: executable being run.
* f: open file. f is omitted in default display mode.
* F: open file for writing. F is omitted in default display mode.
* r: root directory.
* m: mmap’ed file or shared library.

要把这个资源释放的话, 可以有下述做法:

* kill -9 25023 # ps aux | grep 25023 应该就会看到它
* fuser -m -v -i -k /media/share # 会问你是不是要把 25023 这个 kill 掉, 选 y 就会 kill 掉

提示信息如下:
USER      PID   ACCESS COMMAND
/meida/share: root      25023 ..c..  bash
Kill process 25023 ? (y/N) y