fuser 用法简析

fuser

[功能] 

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

[描述] 

fuser显示使用指定文件或者文件系统的进程ID.默认情况下每个文件名后面跟一个字母表示访问类型。

访问类型如下:

c 代表当前目录

e 可执行的被运行

f 打开的文件。默认不显示。

F 打开的文件,用于写操作。默认不显示。

r 根目录。

m 映射文件或者共享库。

当指定的文件没有被访问,或者出现错误的时候,fuser会返回非零。

为了查看使用tcp和udp套接字的进程,需要-n选项并指定名称空间。默认IpV4和IpV6都会显示。套接字可以是本地的或者是远程的端口,和远程的地址。所有的域是可选的,但是其前面的','必须存在。如下:

[lcl_port][,[rmt_host][,[rmt_port]]]

对于ip地址和port,名称和数字表示都可以使用。

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

一些常用选项:

-a 显示所有命令行中指定的文件,默认情况下被访问的文件才会被显示。

-c 和-m一样,用于POSIX兼容。

-k 杀掉访问文件的进程。如果没有指定-signal就会发送SIGKILL信号。

-i 杀掉进程之前询问用户,如果没有-k这个选项会被忽略。

-l 列出所有已知的信号名称。

-m name 指定一个挂载文件系统上的文件或者被挂载的块设备(名称name)。这样所有访问这个文件或者文件系统的进程都会被列出来。如果指定的是一个目录会自动转换成"name/",并使用所有挂载在那个目录下面的文件系统。

-n space 指定一个不同的命名空间(space).这里支持不同的空间文件(文件名,此处默认)、tcp(本地tcp端口)、udp(本地udp端口)。对于端口, 可以指定端口号或者名称,如果不会引起歧义那么可以使用简单表示的形式,例如:name/space (即形如:80/tcp之类的表示)。

-s 静默模式,这时候-u,-v会被忽略。-a不能和-s一起使用。

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

-u 在每个PID后面添加进程拥有者的用户名称。

-v 详细模式。输出似ps命令的输出,包含PID,USER,COMMAND等许多域,如果是内核访问的那么PID为kernel.

-V 输出版本号。

-4 使用IPV4套接字,不能和-6一起应用,只在-n的tcp和udp的命名存在时不被忽略。

-6 使用IPV6套接字,不能和-4一起应用,只在-n的tcp和udp的命名存在时不被忽略。

- 重置所有的选项,把信号设置为SIGKILL.

更多参见fuser的man手册.

[举例] 

*显示使用某个文件的进程信息:

$ fuser -um /dev/sda2

输入之后,输出如下:

/dev/sda2:            6378c(quietheart)  6534c(quietheart)  6628(quietheart)  6653c(quietheart)  7429c(quietheart)  7549c(quietheart)  7608c(quietheart)

这个命令在umount的时候很有用,可以找到还有哪些用到这个设备了。

*杀掉打开readme文件的程序,在确定之前有提示:

$fuser -m -k -i readme

或$fuser -kmi readme

这里,会在kill之前询问是否确定。最好加上-v以便知道将要杀那个进程。

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

$fuser -n tcp 80

或$fuser -v -n tcp 80

或$fuser -v 80/tcp

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

[其他] 

*假设无法卸载的设备为/dev/sdb1

1)运行下面命令看一下哪个用户哪个进程占用着此设备

fuser -m -v /dev/sdb1

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

fuser -m -v -k /dev/sdb1

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

3)再umount

4)扫描/dev/sdb1分区

[/sbin/]fsck [-ay]  /dev/sdb1

*杀掉所有以任何形式访问文件系统 /home的进程:

$fuser -km /home

fuser 用法简析相关推荐

  1. Python中的基本函数及其常用用法简析

    分享Python中的基本函数及其常用用法简析,首先关于函数的解释函数是为了达到某种目的而采取的行为,函数是可重复使用的,用来实现某个单一功能或者功能片段的代码块,简单来说就是由一系列的程序语句组成的程 ...

  2. PrintWriter用法简析

    public class PrintWriterextends Writer 向文本输出流打印对象的格式化表示形式.此类实现在 PrintStream 中的所有 print 方法.它不包含用于写入原始 ...

  3. Dataset的用法简析

    之前的文章,稍微讲了一下Estimator的用法,也提到Estimator的数据处理使用的是tf.data这两个模块是Tensorflow初学者必须掌握的内容.现在,就让我们从大的概念入手,来慢慢理解 ...

  4. 【C语言】typedef的用法简析

    前言 C语言中typedef可以为一个数据类型定义别名(可以理解为人类的绰号),用来替代基本数据类型,数组类型,指针类型,自定义的结构体类型,枚举类型等等:这样使用可以让我们编码方便.下面我来看它在结 ...

  5. java入门学习笔记(二)—— Eclipse入门学习之快捷键、java语言基础知识之各类关键字及其用法简析

    一.Eclipse入门学习 1. 快捷键 对于一个编辑器,快捷键必不可少,是十分好用且有效的工具. 对于一个初学者,首先掌握了如下快捷键. (很多通用的快捷键不多说) Ctrl + / -- 注释当前 ...

  6. android之descendantFocusability用法简析

    2019独角兽企业重金招聘Python工程师标准>>> listView的Item被抢焦点,这是开发中很常见的一个问题,项目中的listview不仅仅是简单的文字,常常需要自己定义l ...

  7. 坑爹的属性,android:descendantFocusability用法简析

    开发中很常见的一个问题,项目中的listview不仅仅是简单的文字,常常需要自己定义listview,自己的Adapter去继承 BaseAdapter,在adapter中按照需求进行编写,问题就出现 ...

  8. android:descendantFocusability用法简析

    开发中很常见的一个问题,项目中的listview不仅仅是简单的文字,常常需要自己定义listview,自己的Adapter去继承BaseAdapter,在adapter中按照需求进行编写,问题就出现了 ...

  9. hog函数的用法 python_Python中的基本函数及常用用法简析

    函数 解释 函数是为了达到某种目的而采取的行为,函数是可重复使用的,用来实现某个单一功能或者功能片段的代码块,简单来说就是由一系列的程序语句组成的程序段落. 函数存在的意义: 1. 提高代码的复用性 ...

最新文章

  1. 你确实应该学习并使用的 10 个 C# 特性
  2. this super 在接口以及实现类中所指的对象
  3. 怎样通过WireShark抓到的包分析出SIP流程图
  4. 第五天2017/04/06(下午3:静态链接库(Lib))
  5. 10.2-3 ifupifdown:激活与禁用网络接口
  6. 未来十年,人人有望在家远程办公?
  7. windows2016+sqlserver2017集群搭建alwayson之域控篇
  8. python编程100例-一,python编程100例
  9. 21套非常棒的网页设计图标素材
  10. win7 64位MMC管理控制台使用“远程桌面”
  11. C++ --对象和类
  12. vue结合vue-amap调用高德地图行政区划分
  13. link标签的用法及link属性大全
  14. 最近整理的面试笔试区别题
  15. laravel 加谷歌验证
  16. 数字存储示波器基本工作原理与使用方法
  17. C++定义全局变量的两种方式
  18. python中0x3f_单片机中0x3f代表什么意思
  19. html怎么转换成ftl模板,FreeMarker入门+模板静态化+模板字符串静态化
  20. 全网最佳优惠券使用算法

热门文章

  1. Win10 ancona傻瓜安装tensorflow-gpu,ancona傻瓜安装pytorch-gpu
  2. [PHP] 深度解析Nginx下的PHP框架路由实现
  3. maven打包不打lib目录里面的jar包解决办法
  4. LeetCode 726. 原子的数量
  5. 网络组Network Teaming
  6. hbase rpc这点事
  7. [代码整洁]自我感悟
  8. opencv矩阵操作函数查询
  9. C#实现HTTP协议:多线程文件传输
  10. 关于Android的硬件抽象层添加进Android系统默认编译的问题