linux 卸载nfs device is busy,NFS umount 提示 device is busy

sudo umount /opt/share

umount.nfs: /opt/share: device is busy

umount.nfs: /opt/share: device is busy

方法一:

fuser -m -v /opt/share

用户  进程号  权限   命令

/opt/share:   root  2798    ..c..  bash

root  2996    ..c..  su

如上所示,有两个进程占用了,将其kill掉,再重新取消挂载。

kill -9 2798 2996

umount /opt/share

方法二:

umount  -l  /opt/share

方法三:

fuser -km /opt/share

$ fuser -m -v /dsg

Usage: fuser [ -a | -s | -c ] [ -n SPACE ] [ -SIGNAL ] [ -kimuv ] NAME...

[ - ] [ -n SPACE ] [ -SIGNAL ] [ -kimuv ] NAME...

fuser -l

fuser -V

Show which processes use the named files, sockets, or filesystems

-a display unused files too

-c mounted FS

-f silently ignored (for POSIX compatibility)

-i ask before killing (ignored without -k)

-k kill processes accessing the named file

-l list available signal names

-m show all processes using the named filesystems

-n SPACE search in this name space (file, udp, or tcp)

-s silent operation

-SIGNAL send this signal instead of SIGKILL

-u display user IDs

-v verbose output

-V display version information

-4 search IPv4 sockets only

-6 search IPv6 sockets only

- reset options

udp/tcp names: [local_port][,[rmt_host][,[rmt_port]]]

-m参数表明指定的路径是一个挂载点显示所有使用指定文件系统的进程,后面可以跟挂载点,-v参数给出详细的输出

一,为什么要使用fuser?

先说 fuser的作用,fuser能识别出正在对某个文件或端口访问的进程

大家想一下,还有哪个命令具备这个功能? 没错,是lsof,我们前面讲过, lsof能够找出正在对指定文件访问的进程,

那么它们两者之间有何区别?

fuser有一个特别的用法在于它可以一次杀死那些正在访问指定文件的进程。

二,如何使用fuser?

1,如何用fuser得到正在使用指定文件的进程?

用法: fuser 文件

说明:它会把正在使用当前文件的进程id列出

[root@localhost lhd]# umount /

umount: /: device is busy.

(In some cases useful info about processes that use

the device is found by lsof(8) or fuser(1))

[root@localhost lhd]# fuser /

/:                       1rc     2rc     3rc     4rc     5rc     6rc     7rc    80rc    82rc    84rc    85rc   153rc   157rc   158rc

160rc   165rc   168rc  203rc   204rc   205rc   253rc   441rc   444rc   516rc   521rc   524rc   582rc   583rc

584rc   633rc  1052rc  1392rc  1394rc  1417rc  1597rc  1609rc  1617rc  1620rc  1683rc  1744rc  1783r  1785rc

1788rc  1806r  1808r  1810rc  1811rc  1812rc  1813rc  1814rc  1815rc  1848rc  1886rc  1899rc  1900rc  2001rc

......太多不一一列出

说明:

这些进程号后面的rc是什么意思?

c 将此文件作为当前目录使用。

e 将此文件作为程序的可执行对象使用。

r 将此文件作为根目录使用。

s 将此文件作为共享库(或其他可装载对象)使用

2,如何列出进程的详细信息,而不仅仅是进程id?

用 -v参数即可

说明: -v:  含义是:verbose output,详细的输出信息

例子:

[root@dev ~]# fuser /var/log

/var/log:             4196c

[root@dev ~]# fuser -v /var/log

USER        PID ACCESS COMMAND

/var/log:            root       4196 ..c.. bash

3,如何列出进程所属的用户?

用 -u参数即可

说明: -u: 含义:display user IDs,显示用户id

例子:

[root@dev ~]# fuser -u /var/log

/var/log:             4196c(root)

4,如何杀死所有正在访问指定文件的进程?

用 -k参数即可

说明: -k:含义: kill processes accessing the named file

例子:

[root@localhost lhd]# fuser -v /root/install.log

用户     进程号 权限   命令

/root/install.log:   root       3185 f.... tail

[root@localhost lhd]# fuser -k /root/install.log

/root/install.log:    3185

[root@localhost lhd]# fuser -v /root/install.log

说明: -k参数能够杀死所有的正在访问指定文件的进程,所以用来杀进程时非常方便

说明之二: fuser如何杀死的进程?

它发送的是这个信号:SIGKILL

三,多学一点知识

1,fuser可以列出它所知的信号:

用 -l参数即可

例子:

[root@dev ~]# fuser -l

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

2,fuser可以发送它已知的信号给访问的指定文件进程而代替-k参数默认发送的SIGKILL

例如:只是挂起进程,那么发送HUP信号就可以了

例子:

[root@localhost lhd]# fuser -v /root/install.log

用户     进程号 权限   命令

/root/install.log:   root       3347 f.... tail

[root@localhost lhd]# fuser -k -SIGHUP /root/install.log

/root/install.log:    3347

[root@localhost lhd]# fuser -v /root/install.log

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值