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

一、命令介绍

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,并杀死进程见下面的例子

2.lsof

        用法:lsof  [-aUu] [+d]

        一个奇怪的命令,

        -u:后接username;

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

二。解决无法umount问题

本来在把服务器本地yum源挂载到了html目录下的centos目录,用来方便局域网内用户可以不连外网就能进行yum安装或这升级,有一天centos目录却出错了导致无法安装软件,就重新挂载了centos,但是直接umount不动,就用fuser查看并杀死进程成功umount

[root@sf ~]# umount -f /var/www/html/centos/
umount2: 设备或资源忙
umount: /var/www/html/centos: device is busy.
        (In some cases useful info about processes that use
         the device is found by lsof(8) or fuser(1))
umount2: 设备或资源忙
[root@sf ~]# fuser -l /var/www/html/centos/
HUP INT QUIT ILL TRAP ABRT IOT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM
STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH IO PWR SYS
UNUSED
[root@sf ~]# fuser /var/www/html/centos/
/var/www/html/centos/:  9807c
[root@sf ~]# ps -aux|grep 9807c
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ
root     10000  0.0  0.0 103240   896 pts/3    S+   15:04   0:00 grep 9807c
[root@sf ~]# 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/
相关文章
相关标签/搜索