背景说明:
我们在日常运维中经常性会遇到需要进行磁盘的扩容、卸载、挂载等操作,但是有时候这个系统上跑的应用并没有停止或者有其他的运维同事在操作这个目录,这个时候我们是无法直接umount卸载掉的,所以今天就给大家分享一下如果遇到这种问题了,我们如何去合理的处理?
现象描述:这里我们需要将/mnt目录卸载掉,如下图所示:
执行卸载命令:umount /mnt后,发现卸载不了,提示资源被占用,如下图所示:
上面我们已经看到了,提示被占用,无法卸载,如何处理呢?方法很简单,可以使用强制卸载,命令如下:
- [root@docker /]# umount -f /mnt
- umount2: Device or resource busy
- umount: /mnt: device is busy
- umount2: Device or resource busy
- umount: /mnt: device is busy
-f参数为进行强制卸载,这里我们也发现了,上面使用的强制卸载并未生效,还是报错了,怎么办呢?不要着急,看下面!
使用fuser命令,先确认有哪些进程在占用该目录
- [root@docker /]# fuser -cu /mnt
- /mnt: 1112c(java)
上面查看发现是pid为1112的java进程目前在占用这此目录,所以无法卸载。
那么我们确认了是哪个进程占用着此目录后,我们可以kill 掉该进程,
这里有两种方法去kill进程:
第一种就是我们平常用到的直接命令:kill -9 1120;
第二种就是使用fuser -ck /mnt
- [root@docker /]# fuser -ck /mnt
- /mnt: 1120c
当我们需要知道哪个目录被哪个进程所占用的时候,也可以使用lsof 命令进行查看。