前提

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

功能

fuser 可以显示出当前哪个程序在使用磁盘上的某个文件、挂载点、甚至网络端口,并给出程序进程的详细信息.

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

2)运行下面命令杀掉占用此设备的进程 
fuser -m -v -k /dev/sdb1 
或者fuser -m -v -k -i  /dev/sdb1(每杀掉一下进程会让你确认) 
3)再umount

查看那些程序使用tcp的80端口: 
$fuser -n tcp 80 
或$fuser -v -n tcp 80 
或$fuser -v 80/tcp 
这里,后两种方式显示的信息比较全,因为有了-v选项

  1. # fuser -v 111/udp 111/tcp
  2. 用户 进程号 权限 命令
  3. 111/udp: rpc 968 F.... rpcbind
  4. 111/tcp: rpc 968 F.... rpcbind

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

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

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

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

其它相同命令:

  1. # netstat -lntup|grep 111
  2. tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 968/rpcbind
  3. tcp 0 0 :::111 :::* LISTEN 968/rpcbind
  4. udp 0 0 0.0.0.0:111 0.0.0.0:* 968/rpcbind
  5. udp 0 0 :::111 :::* 968/rpcbind
  1. # ss -lntup|grep 111
  2. udp UNCONN 0 0 *:111 *:* users:(("rpcbind",968,6))
  3. udp UNCONN 0 0 :::111 :::* users:(("rpcbind",968,9))
  4. tcp LISTEN 0 128 :::111 :::* users:(("rpcbind",968,11))
  5. tcp LISTEN 0 128 *:111 *:* users:(("rpcbind",968,8))
  1. # lsof -i :111
  2. COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
  3. rpcbind 968 rpc 6u IPv4 11275 0t0 UDP *:sunrpc
  4. rpcbind 968 rpc 8u IPv4 11278 0t0 TCP *:sunrpc (LISTEN)
  5. rpcbind 968 rpc 9u IPv6 11280 0t0 UDP *:sunrpc
  6. rpcbind 968 rpc 11u IPv6 11283 0t0 TCP *:sunrpc (LISTEN)

signal列表

  1. # fuser -l
  2. HUP INT QUIT ILL TRAP ABRT IOT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM
  3. STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH IO PWR SYS
  4. UNUSED
  5.  
  6. # kill -l
  7. 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
  8. 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
  9. 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
  10. 16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
  11. 21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
  12. 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
  13. 31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
  14. 38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
  15. 43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
  16. 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
  17. 53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
  18. 58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
  19. 63) SIGRTMAX-1 64) SIGRTMAX

详细使用命令 man 7signal

fuser - 查看文件/网络端口等被什么进程占用的更多相关文章

  1. linux查看某个端口是被哪个进程占用的

    查看某个端口是被哪个进程占用的: netstat -tunpl | grep 6379

  2. win下如何查看那个网络端口被那个应用程序使用

    在运行里面键入cmd打开命令行窗口.     在命令行窗口键入命令: netstat -ano 第一和第二列是自己网络的端口和外网连接的端口,pid:(全称Process Identification ...

  3. linux如何查看端口号被哪个进程占用

    1.lsof -i:端口号 lsof(list open files) 2.netstat -tunlp |grep 端口号 t:tcp u:udp n:拒绝显示别名 l:仅显示listen的服务状态 ...

  4. 亲测有效,解决80端口被svchost.exe进程占用的问题,网上的方法不行,可以试试这个

    先说网上无效的方法(个人尝试无效,不具有代表性): 网上第一个说法:把IIS给关了,Windows10系统本身IIS是处于禁用状态的,并且没有额外安装IIS和启动IIS. 网上第二个说法:和SQL S ...

  5. 关于windows2008r2系统80端口被system进程占用的问题

    80端口被system占用的问题   今天启动tomcat的时候发现无法启动80端口被占用 通过netstat -ano查看,发现被pid=4的进程占用 检查进程发现是system进程pid=4给占用 ...

  6. 查看系统网络连接打开端口、系统进程、DOS打开文件

    问题描述: DOS查看系统网络连接打开端口.打开的服务 问题解决: (1)DOS查看系统网络连接打开端口 注: 使用    netstat 命令,可以查看系统打开的端口 (2)查看和关闭系统打开进程 ...

  7. Linux查看网络端口

    简单的总结一下前段时间学习Linux的成果 查看 TCP 22 端口是否打开1.列出所有端口:[root@Demon proc]# netstat -ntlpActive Internet conne ...

  8. Python 输出文件内容到网络端口

    Python 输出文件内容到网络端口 $ cat mySocketTest.py import sys import time import socket if __name__ == "_ ...

  9. Linux 查看网卡流量、网络端口

    查看网络流量 # 查看网卡流量 命令:sar -n DEV 1 10 注:每1秒 显示 1次 显示 10次 平均时间: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcm ...

随机推荐

  1. jQuery 练习:取出数组字典的值, 静态对话框, clone方法应用

    jQuery 中文API文档 http://jquery.cuishifeng.cn/ jQuery 取出数组字典的值 <head> <meta charset="UTF- ...

  2. ubuntu12.0.4开启root用户登陆

    1.命令:sudo passwd root 为root分配密码,按提示进行设置就好. 2.打开终端,输入以下命令: sudo -s 进入root账户下: cd /etc/lightdm       g ...

  3. Android6.0 源码修改之屏蔽导航栏虚拟按键(Home和RecentAPP)/动态显示和隐藏NavigationBar

    场景分析, 为了完全实现沉浸式效果,在进入特定的app后可以将导航栏移除,当退出app后再次将导航栏恢复.(下面将采用发送广播的方式来移除和恢复导航栏) ps:不修改源码的情况下,简单的沉浸式效果实现 ...

  4. DOM对象和window对象

    本文内容: DOM对象 Window 对象 首发日期:2018-05-11 DOM对象: DOM对象主要指代网页内的标签[包括整个网页] 比如:document代表整个 HTML 文档,用来访问页面中 ...

  5. Django 配置MySQL数据库

    在settings.py中配置 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', # 数据库引擎 'NAME': 'my ...

  6. MySQL状态变量Aborted_connects与Aborted_clients浅析

    关于MySQL的状态变量Aborted_clients & Aborted_connects分别代表的意义,以及哪些情况或因素会导致这些状态变量变化呢?下文通过实验测试来验证一下,首先我们来看 ...

  7. 自动化测试基础篇--Selenium cookie操作

    摘自https://www.cnblogs.com/sanzangTst/p/8376471.html 在验证浏览器中cookie是否正确时,有时基于真实cookie的测试是无法通过白盒和集成测试进行 ...

  8. 自动化测试基础篇--Selenium Xpath定位

    摘自https://www.cnblogs.com/sanzangTst/p/7458056.html 学习 什么是xpath? XPath即为XML路径语言,它是一种用来确定XML(标准通用标记语言 ...

  9. DELL OME监控服务器安装配置

    介绍 OME软件配合DELL的SA可以对服务器硬件进行监控,并且如果服务器出问题会自动联系DELL报修,方便我们管理维护,具体安装要求就不多写了,我用的机器4核8G内存200G硬盘空间,创建在Hype ...

  10. python shell与反弹shell

    python shell与反弹shell 正常shell需要先在攻击端开机情况下开启程序,然后攻击端运行程序,才能连接 反弹shell,攻击端是服务端,被攻击端是客户端正常shell,攻击端是客户端, ...