快捷搜索:

umount卸载失败:umount: /mnt: target is busy.

在平时的维护系统中经常遇到 umount卸载失败:umount: /mnt: target is busy. 问题

一般情况是程序占用导致卸载失败问题

因为linux支持多用户登录,当用户在使用挂载的目录是,想卸载它,哈哈~不可能的事

umount卸载失败:umount: /mnt: target is busy.

[root@test01 mnt]# umount  /mnt
umount: /mnt: target is busy.
        (In some cases useful info about processes that use
         the device is found by lsof(8) or fuser(1))

分析:找到当前登录用户

[root@test01 mnt]# w
 10:09:07 up  1:20,  2 users,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     tty1                      08:49    1:19m  0.18s  0.18s -bash
root     pts/0    10.0.0.1         09:11    3.00s  0.07s  0.01s w
可以看出,有一个root用户是无效的

不知道什么原因,应该重启可以恢复,但我没用重启,直接T掉用户。
方法大至如下:
想踢除kaifa这个用户和他的所有开启的程序
[root@localhost ~]# pkill -u kaifa
注意:这个命令实际上很危险,要相当小心的执行,因为这个用户的所有操作都将立即截止并不保存。 
安全的做法是先查看终端号,然后查看该终端执行的所有进程,根据进程号来停止服务
安全剔除用户--得到用户登录相应的进程号pid后执行.
[root@localhost ~]# ps -ef |grep pts/2



但保障起见,还是设置应该无效用户自动退出脚本

[root@test01 mnt]# vim /etc/profile.d/autologout.sh

TMOUT=10
readonly TMOUT
export TMOUT

加上执行权限

[root@test01 mnt]# chmod +x /etc/profile.d/autologout.sh

重启系统:reboot
再次登录时
[root@test01 ~]# w
 10:13:00 up 1 min,  1 user,  load average: 0.21, 0.12, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    10.0.0.1         10:12    4.00s  0.02s  0.00s w
无效的root用户被自动下线,再来卸载


###
可以使用 fuser 或者 lsof /dev/vdb来查看当前仍在使用/dev/vdb的进程,我这里使用fuser

能看到我这里显示的是kernel进程在使用,因为我启用了nfs,所以我这里关闭nfs服务即可。

如果是显示pid数值,直接kill -9 数值 或者 fuser 加上 -k 参数杀死进程即可。

fuser  -mv -k  /dev/vdb 先杀死使用该目录的所有进程

-m  后跟一个目录、文件或者设备名,列出使用该文件的进程PID

-v 显示详细信息

-k 杀死使用指定文件的所有进程
最后执行umout 即可。

关于fuser的介绍:

fuser 可以显示出当前哪个程序在使用磁盘上的某个文件、挂载点、或者网络端口,并给出程序进程的详细信息.

fuser只把PID输出到标准输出,其他的都输出到标准错误输出

查看那些程序使用tcp的80端口: fuser -v -n tcp 80

 

方法二、通过lsof命令处理

 
 

找到PID对应的进程或者服务,然后杀死或者停止相应服务即可。



 

您可能还会对下面的文章感兴趣: