当前位置:   article > 正文

Linux 强制卸载挂载点---fuser 命令详解_fuser 卸载

fuser 卸载

Linux fuser 命令详解

强制卸载挂载点

如果你的光盘挂载在/mnt/cdrom
使用umount /dev/cdrom提示busy
可以使用以下命令强行卸载。

# fuser -km /mnt/cdrom
# umount /mnt/cdrom
  • 1
  • 2

fuser命令小结

linux环境下,当使用umount命令卸载挂载点时,会遇到“device is busy”提示,这时fuser就能查出谁在使用这个资源;当然umount –lf [挂载点] 也可以强制卸载
功能

fuser 可以显示出当前哪个程序在使用磁盘上的

某个文件
挂载点
甚至网络端口
  • 1
  • 2
  • 3

并给出程序进程的详细信息.

fuser只把PID输出到标准输出,其他的都输出到标准错误输出。
常用选项

-a 显示所有命令行中指定的文件,默认情况下被访问的文件才会被显示。
-c 和-m一样,用于POSIX兼容。
-k 杀掉访问文件的进程。如果没有指定-signal就会发送SIGKILL信号。结合 –signal

-signal 使用指定的信号,而不是用SIGKILL来杀掉进程。可以通过名称或者号码来表示信号(例如-HUP,-1),这个选项要和-k一起使用,否则会被忽略。

-l 列出所有已知的信号名称。
-i 杀掉进程之前询问用户,如果没有-k这个选项会被忽略。
-m name 指定一个挂载文件系统上的文件或者被挂载的块设备(名称name)。这样所有访问这个文件或者文件系统的进程都会被列出来。如果指定的是一个目录会自动转换成"name/",并使用所有挂载在那个目录下面的文件系统。
-n space 指定一个不同的命名空间(space).这里支持不同的空间文件(文件名,此处默认)、tcp(本地tcp端口)、udp(本地udp端口)。对于端口,可以指定端口号或者名称,如果不会引起歧义那么可以使用简单表示的形式,例如:name/space (即形如:80/tcp之类的表示)。
-s 静默模式,这时候-u,-v会被忽略。-a不能和-s一起使用。
-u 在每个PID后面添加进程拥有者的用户名称。
-v 详细模式。输出似ps命令的输出,包含PID,USER,COMMAND等许多域,如果是内核访问的那么PID为kernel.

案例

假设无法卸载的设备为/dev/sdb1
1)运行下面命令看一下哪个用户哪个进程占用着此设备

fuser -m -v /dev/sdb1
  • 1

2)运行下面命令杀掉占用此设备的进程

fuser -m -v -k /dev/sdb1
  • 1

或者fuser -m -v -k -i /dev/sdb1(每杀掉一下进程会让你确认)
3)再umount

查看那些程序使用tcp的80端口:

   fuser -n tcp 80
或   # fuser -v -n tcp 80#fuser -v 80/tcp
  • 1
  • 2
  • 3

这里,后两种方式显示的信息比较全,因为有了-v选项

#fuser -v 111/udp 111/tcp 
  • 1

用户 进程号 权限 命令
111/udp: rpc 968 F… rpcbind
111/tcp: rpc 968 F… rpcbind

如上例子中第4列的权限也成访问类型,如下:

c 代表当前目录 F 打开的文件,用于写操作。默认不显示。

e 可执行的被运行 m 映射文件或者共享库。

f 打开的文件。默认不显示。 r 根目录。

其它相同命令:

#netstat -lntup|grep 111
  • 1

tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 968/rpcbind
tcp 0 0 :::111 ::

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小惠珠哦/article/detail/745078
推荐阅读
相关标签