引言

fuser是linux中较常用的工具,"fuser"——从其名称我们可以看出该工具的用途:查询给定文件或目录的用户或进程信息。

除查询文件相关信息之外,使用fuser还能向进程发送SIGKILL等信号,完成强制让进程退出的功能,下面我们就来看fuser工具的具体使用方法。

以上命令查询了/root目录被哪些进程使用,输出包含进程的PID以及字符’c’。字符’c’指示了进程的工作目录,使用以下命令可进行验证:

 

查询文件和目录使用者
fuser最基本的用法是查询某个文件或目录被哪个进程使用:

# fuser /root
/root:               17923c 24869c

以上命令查询了/root目录被哪些进程使用,输出包含进程的PID以及字符’c’。字符’c’指示了进程的工作目录,使用以下命令可进行验证:

# ls -l /proc//cwd
lrwxrwxrwx  root root  Apr  : /proc//cwd -> /root

PID后跟的字符说明了进程以何种方式与该目录/文件关联,有以下关联方式:

  c  指示进程的工作目录

  e  指示该文件为进程的可执行文件(即进程由该文件拉起)

  f  指示该文件被进程打开,默认情况下f字符不显示

  F  指示该文件被进程打开进行写入,默认情况下F字符不显示

  r  指示该目录为进程的根目录

  m  指示进程使用该文件进行内存映射,抑或该文件为共享库文件,被进程映射进内存

使用-v选项将显示更全的信息:

# fuser -v /root
            USER     PID    ACCESS   COMMAND
/root:      root        ..c..      bash
            root        ..c..      atop

下面我们使用一个端口监听的例子,来看可执行文件、socket端口使用进程的信息查询。

# ./socket &

以上socket程序是一个使用C编写的小程序,起一个TCP服务端,监听9999端口,代码请查附件。

执行完该程序时候,我们使用fuser进行查询:

# fuser -v socket
             USER    PID   ACCESS   COMMAND
socket:    root        ...e.   socket

可以看到PID为11861与socket文件的关联方式为’e’,与上表所列相符。

查询socket和文件系统使用者

除了查询文件、目录的相关使用进程,我们还可以对socket端口的使用者进行查询。还是使用上面socket程序,我们对端口9999进行如下查询:

# fuser -v -n tcp
              USER     PID    ACCESS   COMMAND
/tcp:     root        F....    socket

另外,针对某文件系统的使用者,我们可以使用-m参数进行查询,对于以下分区的系统:

# df
Filesystem           1K-blocks      Used     Available Use%  Mounted on
/dev/sda2                   %  /
udev                                 %  /dev
/dev/sda3                   %  /home1
/dev/sdb2                   %  /home2

执行以下查询命令:

# fuser -m /home1
/home1:               2703ce

可以看到/dev/sda3分区的使用者为2703对应的进程,执行fuser –m /dev/sda3、fuser –m /home1/test将得到相同的结果。

使用fuser关闭进程

除了可以使用fuser进行查询之外,fuser还可以向进程发送信号,让进程退出:

# fuser -v -k socket
             USER    PID   ACCESS   COMMAND
socket:      root      ...e.    socket

[]+  Killed                  ./socket

-k选项表示向使用socket文件的相关进程发送SIGKILL信号。除了发送SIGKILL信号之外,fuser还可以发送以下信号:

# fuser -l /home
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

另外,加上-i选项,在KILL进程时,需要人为地进行确认:

# fuser -v -k -i socket
            USER    PID   ACCESS   COMMAND
socket:     root     ...e.     socket
Kill process  ?(y/N)

小结

本文介绍了fuser工具的用法,fuser可用于查询文件、目录、socket端口和文件系统的使用进程,并且可以使用fuser关闭进程。

当文件系统umount报device busy时,常用到fuser查询并关闭使用相应文件系统的进程。

本文翻译自 5 Practical Linux fuser Command Examples

Linux fuser工具使用方法介绍的更多相关文章

  1. Linux truncate的使用方法介绍

    Linux truncate的使用方法介绍 参考资料:https://www.fengbohello.top/archives/linux-truncate 本命令缩减或扩充指定文件的大小为指定值.参 ...

  2. 转://linux下的CPU、内存、IO、网络的压力测试工具与方法介绍

    转载地址:http://wushank.blog.51cto.com/3489095/1585927 一.对CPU进行简单测试: 1.通过bc命令计算特别函数 例:计算圆周率 echo "s ...

  3. Linux文件查看/编辑方法介绍

    转载:https://www.centos.bz/2011/10/linux-file-view-edit/ cat 命令介绍 cat 命令的原含义为连接(concatenate), 用于连接多个文件 ...

  4. 云服务器 ECS Linux 误删除文件恢复方法介绍

    云服务器 ECS Linux 下,rm -rf  意味着一旦删除的文件是无法挽回的.但如果在没有文件覆盖操作的前提下,可以先尝试相关方式进行文件恢复. 本文对此进行简要说明. https://help ...

  5. (转)Detect it Easy(壳侦测工具)使用方法介绍

    http://www.ucbug.com/jiaocheng/129805.html Detect it Easy是一个多功能的PE-DIY工具,主要用于壳侦测.功能正日益完善,是不可多得的破解利器! ...

  6. Linux lsof工具介绍

    引言 在<Linux fuser工具介绍>一文中,与大家一起学习了fuser工具的使用方法."lsof"——list open files,lsof也是Linux下用于 ...

  7. 爬虫 Http请求,urllib2获取数据,第三方库requests获取数据,BeautifulSoup处理数据,使用Chrome浏览器开发者工具显示检查网页源代码,json模块的dumps,loads,dump,load方法介绍

    爬虫 Http请求,urllib2获取数据,第三方库requests获取数据,BeautifulSoup处理数据,使用Chrome浏览器开发者工具显示检查网页源代码,json模块的dumps,load ...

  8. Linux操作系统--help、man和info工具的区别介绍

    http://wenda.tianya.cn/wenda/thread?tid=1d4b0f172f958833Linux操作系统--help.man和info工具的区别介绍 Linux操作系统为我们 ...

  9. Linux性能工具介绍

    l  Linux性能工具介绍 p  CPU高 p  磁盘I/O p  网络 p  内存 p  应用程序跟踪 l  操作系统与应用程序的关系比喻为“唇亡齿寒”一点不为过 l  应用程序的性能问题/功能问 ...

随机推荐

  1. 页面的隐藏或显示:hidden与visibilityState

    我们在很多地方都需要判断用户是不是在当前页面,如果离开了当前页面我们需要捕捉到并进行一些操作. 例如:当视频处于播放状态时,我们需要判断用户是不是在当前页面以继续播放,如果离开了我们需要暂停播放. 有 ...

  2. NetCore + Mysql CodeFirst 生成数据库

    首先定义领域的模型类,然后配置下面的一些东西,最后执行类 1. 新建Context 继承自 DbContext public class EFProjectContext : DbContext { ...

  3. 产品经理人的持续交付和DevOps实践

    如果你正处于下列情形中 ,那这篇文章是为你准备的: 你目前身处技术行业,你是产品经理,并且,你明白特性分支是什么,CD代表什么,DevOps文化是什么样子的. 或者,你已经在实施敏捷,团队每周都会与您 ...

  4. SSRS报表-级联筛选参数刷新后不能默认全选 -问题解决方案

    好久没有写博客了,最近更新完善修复了SSRS报表的一些问题,和大家分享. 问题描述: 报表中,区域->专区->省份->地级市 此四个筛选参数是联动的,在DataSet中前一父级参数作 ...

  5. [Spring-Cloud-Alibaba] Sentinel 整合RestTemplate & Feign

    Sentinel API Github : WIKI Sphu (指明要保护的资源名称) Tracer (指明调用来源,异常统计接口) ContextUtil(标示进入调用链入口) 流控规则(针对来源 ...

  6. Lucene03--字段属性

    Lucene03--字段属性 1.Field 1.1  Field相当于Javabean的属性. 1.2  不同的Field的构造方法参数不一样: 大多数Field的构造函数有三个参数: a)第一个参 ...

  7. javascript之正则表达式(二)

    js正则贪婪模式与非贪婪模式 类似于贪吃蛇游戏,越吃越长.而贪婪模式就是尽可能多的匹配. 默认是贪婪模式      (尽可能多的匹配)                           例子: va ...

  8. 异步编程之Async,Await和ConfigureAwait的关系

    在.NET Framework 4.5中,async / await关键字已添加到该版本中,简化多线程操作,以使异步编程更易于使用.为了最大化利用资源而不挂起UI,你应该尽可能地尝试使用异步编程.虽然 ...

  9. 个人永久性免费-Excel催化剂功能第96波-地图数据挖宝之全国天气查询(区域最细可到区县,最长预报4天)

    天气预报的信息,是很普通的大家习以为常的信息,但如果不进行采集,在日常数据分析过程中,就少了非常重要的一个分析维度,如果人手采集整理,工作量巨大.此篇给广大数据分析工作者再次减负,只需简单一键,即可批 ...

  10. pyqt QT设计师制作关于对话框(软件版权申明)

    一.实验环境 1.anaconda2 2.5.0 + python2.7 2.pyinstaller3.0 二.操作步骤 2.1 启动designer.exe 2.2 单击“文件” -> “新建 ...