引言

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. 图片懒加载,Selenium,PhantomJS

    引入 今日概要 图片懒加载 selenium phantomJs 谷歌无头浏览器 知识点回顾 验证码处理流程 今日详情 动态数据加载处理 一.图片懒加载 什么是图片懒加载? 案例分析:抓取站长素材ht ...

  2. django实战仿慕课网在线视频网站(完成了85%以上的功能已上传github:https://github.com/huwei86/mxonline):

    1. 前台功能模块 基本模块:登录 注册 找回密码 / 全局搜索 / 个人中心, 课程功能:课程管理 / 讲师管理 / 授课机构管理  热门推荐 相关课程推荐 用户操作管理:用户收藏 / 课程评论   ...

  3. Effective Java第三版(一) ——用静态工厂代替构造器

    此文做为<Effective Java>系列的第一篇,所以有必要大概说下此书的特点,当然很多人可能都看过,毕竟是有着Java四大名著之一的大名在外,不过总会有萌新不了解,例如我!<E ...

  4. python输出带颜色详解

    书写格式:     开头部分:\033[显示方式;前景色;背景色m + 结尾部分:\033[0m      注意:开头部分的三个参数:显示方式,前景色,背景色是可选参数,可以只写其中的某一个:另外由于 ...

  5. markdown的博客

    测试一下markdown写博客 function firstProgram() { console.log("This is my first markdown blog"); }

  6. 数据结构-循环队列(Python实现)

    今天我们来到了循环队列这一节,之前的文章中,我介绍过了用python自带的列表来实现队列,这是最简单的实现方法. 但是,我们都知道,在列表中删除第一个元素和删除最后一个元素花费的时间代价是不一样的,删 ...

  7. [Noi2002]Savage 题解

    [Noi2002]Savage 时间限制: 5 Sec  内存限制: 64 MB 题目描述 输入 第1行为一个整数N(1<=N<=15),即野人的数目. 第2行到第N+1每行为三个整数Ci ...

  8. QRowTable表格控件(二)-红涨绿跌

    目录 一.开心一刻 二.概述 三.效果展示 四.任务需求 五.指定列排序 六.排序 七.列对其方式 八.相关文章 原文链接:QRowTable表格控件(二)-红涨绿跌 一.开心一刻 一天,五娃和六娃去 ...

  9. Java编程思想:File类list()方法

    import java.util.regex.Pattern; import java.io.File; import java.io.FilenameFilter; public class Tes ...

  10. GLFW+GLEW搭建opengl环境(备忘)

    使用VS2017社区版本(免费版) 下载GLFW和GLEW源码. 使用CMAKE生成工程文件 打开右击GLFW和GLEW项目编译 GLFW默认是静态库 编译GLEW时调整为静态库.将生成的lib和源码 ...