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对应的进程或者服务,然后杀死或者停止相应服务即可。