首页 > 代码库 > 用fuser或者lsof解决无法umount问题(device is busy)

用fuser或者lsof解决无法umount问题(device is busy)

umount卸载磁盘时,如果有进程在使用该盘,则卸载不成功,报错如下:

# umount /data
umount: /data:目标忙。
        (有些情况下通过 lsof(8) 或 fuser(1) 可以
         找到有关使用该设备的进程的有用信息)


一、命令介绍

1.fuser

    用法 :fuser  [-umv] [-k [i] [-signal] ] file/dir

           -u:除了进程的PID外 ,同时列出该进程的所有者。

           -m:后接的文件名会主动上调到文件系统的所顶层,对umount不成功很有效。

           -v:列出每个文件与程序还有命令的完整相关性。

           -k:找出使用文件/目录的pid,并试图一sigkill这个信号给予该pid.

           -i:与,-k合用,kill前询问用户意愿。

           -signal:1,15,9

    可用于在无法umount文件时,查看pid,并杀死进程见下面的例子

# fuser /var/www/html/centos/
/var/www/html/centos/:  9807c

# ps -aux|grep 9807
Warning: bad syntax, perhaps a bogus ‘-‘? See /usr/share/doc/procps-3.2.8/FAQ
root      9807  0.0  0.0 108428  2000 pts/2    Ss+  14:52   0:00 -bash
root     10003  0.0  0.0 103240   896 pts/3    S+   15:05   0:00 grep 9807
[root@sf ~]# kill -9 9807
[root@sf ~]# umount /var/www/html/centos/

2.lsof

   用法:lsof  [-aUu] [+d], 一个奇怪的命令,

         -u:后接username;

         +d:后接目录,找出某个目录下面已经被打开的文件。

# lsof +d /data
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
bash    99174 root  cwd    DIR   8,17     4096    2 /data
# ps aux |grep 99174
root      99174  0.0  0.0 116756  3456 pts/0    Ss+  09:29   0:00 -bash
root     100513  0.0  0.0 112664   968 pts/5    S+   16:47   0:00 grep --color=auto 99174
#kill -9 99174
#umount /data

用fuser或者lsof解决无法umount问题(device is busy)