umount:device is busy 解决方法

in linux with 0 comment

当磁盘分区出现问题需要修复的时候,使用fsck命令,运行这个命令前,最好先卸载分区。

#fsck -V -a /dev/sda1

 

当挂载的磁盘需要卸载时使用umount命令,提示如题的错误时,说明磁盘中还有文件对应的进程在运行。

#umount /data/www

umount: /data/www : device is busy

解决方法一:

查找文件被进程所占用的进程号,命令如下

#fuser -m /data/www

/data/www :  8800c                           //8800代表进程号   c代表进程使用的目录

#ps -ef |grep 8800                             //根据PID 找到具体进程,然后杀掉进程

#kill -9 8800           //或者停掉进程服务,如/usr/local/apache/bin/apachectl stop

#umount /data/www             //最后可以正常卸载

以上可以用一条命令直接删除进程:

#fuser -k -x -u -c /dev/hd1 或者 fuser -kxuc /home

fuser命令用于报告进程使用的文件和网络套接字。fuser命令列出了本地进程的进程号,那些本地进程使用file,参数指定的本地或远程文件。对于阻塞特别设备,此命令列出了使用该设备上任何文件的进程。

每个进程号后面都跟随一个字母,该字母指示进程如何使用文件。

c:指示进程的工作目录。

e:指示该文件为进程的可执行文件(即进程由该文件拉起)。

f:指示该文件被进程打开,默认情况下f字符不显示。

F:指示该文件被进程打开进行写入,默认情况下F字符不显示。

r:指示该目录为进程的根目录。

m:指示进程使用该文件进行内存映射,抑或该文件为共享库文件,被进程映射进内存。

语法 fuser(选项)(参数) 选项

-a:显示命令行中指定的所有文件;

-k:杀死访问指定文件的所有进程;

-i:杀死进程前需要用户进行确认;

-l:列出所有已知信号名;

-m:指定一个被加载的文件系统或一个被加载的块设备;

-n:选择不同的名称空间;

-u:在每个进程后显示所属的用户名。

 

解决方法二

尝试强制卸载

#umount /data/www  -f                //正常情况下要等个1-2分钟,不保证一定行。如果强制卸载不行就使用上面的第一种方法。

 

Responses