前言
有时我们会因为某些需要,会对已挂载好的目录进行调整。这时就需要先对硬盘先解除挂载,再重新挂载新目录。但是,在解除挂载的时候,可能会遇到无法解除挂载的问题。下面介绍的就是解决这个问题的方法。
磁盘分区、挂载、取消挂载操作
问题
使用umount或umount -f强制解除挂载,提示device is busy,无法解除挂载。
umount: /mnt: device is busy. 设备正忙
(In some cases useful info about processes that use
the device is found by lsof(8) or fuser(1))
原因
通常是解除挂载时,有进程正在使用此挂载的目录导致
解决方法
其他的无法解除挂载的报错,也可使用下列方法解决。
【1】方法一(fuser)
fuser能识别出当前正在对指定文件、挂载点或端口访问的进程的详细信息
fuser会显示当前正在使用指定文件或挂载点的进程ID和进程的访问类型
进程的访问类型:
c 作为当前目录使用
e 作为程序的可执行对象使用
f 作为打开的文件(默认不显示)
F 作为打开的文件,写操作(默认不显示)
r 作为根目录使用
m 作为映射文件或者共享库
s 作为共享库(或其他可装载对象)
常用参数/选项
-k 杀掉访问文件的进程
-i 杀掉进程之前询问用户
-l 列出所有已知的信号名称
-signal 使用指定的信号,而不是用SIGKILL来杀掉进程(要和-k一起使用,否则会被忽略)
-v 列出进程的详细信息
<1>查看当前访问挂载点的进程
fuser /mnt
或
fuser /mnt -v
<2>杀死进程
fuser /mnt -k
或
kill -9 4882
<3>解除挂载
杀掉占用进程后,再解除挂载
umount /mnt
【2】方法二(losf)
<1>查找当前使用挂载点的进程
lsof |grep "/mnt"
<2>杀死进程
kill -9 5059
<3>解除挂载
杀掉占用进程后,再解除挂载
umount /mnt