fuser:藉由文件(或文件系统)找出正在使用该文件的程序

  1. [root@www ~]# fuser [-umv] [-k [i] [-signal]] file/dir
  2. 选项与参数:
  3. -u :除了进程的 PID 之外,同时列出该进程的拥有者;
  4. -m :后面接的那个档名会主动的上提到该文件系统的最顶层,对 umount 不成功很有效!
  5. -v :可以列出每个文件与进程还有命令的完整相关性!
  6. -k :找出使用该文件/目录的 PID ,并试图以 SIGKILL 这个讯号给予该 PID
  7. -i :必须与 -k 配合,在删除 PID 之前会先询问使用者意愿!
  8. -signal:例如 -1 -15 等等,若不加的话,默认是 SIGKILL (-9) 罗!
  9.  
  10. 范例一:找出目前所在目录的使用 PID/所属帐号/权限 为何?
  11. [root@www ~]# fuser -uv .
  12. USER PID ACCESS COMMAND
  13. .: root 20639 ..c.. (root)bash

项目代表的意义为:



    c :此进程在当前的目录下(非次目录);

    e :可被触发为运行状态;

    f :是一个被开启的文件;

    r :代表顶层目录 (root directory);

    F :该文件被开启了,不过在等待回应中;

    m :可能为分享的动态函式库;

  1. 范例二:找到所有使用到 /proc 这个文件系统的进程吧!
  2. [root@www ~]# fuser -uv /proc
  3. # 不会显示任何数据,因为没有任何进程会去使用 /proc 这个目录啊!
  4. # 会被用到的是 /proc 底下的文件啦!所以你应该要这样做:
  5.  
  6. [root@www ~]# fuser -mvu /proc
  7. USER PID ACCESS COMMAND
  8. /proc: root 4289 f.... (root)klogd
  9. root 4555 f.... (root)acpid
  10. haldaemon 4758 f.... (haldaemon)hald
  11. root 4977 F.... (root)Xorg
  12. # 有这几支进程在进行 /proc 文件系统的存取喔!这样清楚了吗?

  1. 范例三:找到 /var 底下属於 FIFO 类型的文件,并且找出存取该文件的进程
  2. [root@www ~]# find /var -type p
  3. /var/gdm/.gdmfifo <==我们针对这玩意即可!
  4. /var/run/autofs.fifo-misc
  5. /var/run/autofs.fifo-net
  6.  
  7. [root@www ~]# fuser -uv /var/gdm/.gdmfifo
  8. USER PID ACCESS COMMAND
  9. /var/gdm/.gdmfifo: root 4892 F.... (root)gdm-binary
  10.  
  11. 范例四:同范例三,但试图删除该 PID?且『不要』删除喔!
  12. [root@www ~]# fuser -ki /var/gdm/.gdmfifo
  13. /var/gdm/.gdmfifo: 4892
  14. Kill process 4892 ? (y/N) n

lsof :列出被程序所开启的文件档名

  1. [root@www ~]# lsof [-aUu] [+d]
  2. 选项与参数:
  3. -a :多项数据需要『同时成立』才显示出结果时!
  4. -U :仅列出 Unix like 系统的 socket 文件类型;
  5. -u :后面接 username,列出该使用者相关进程所开启的文件;
  6. +d :后面接目录,亦即找出某个目录底下已经被开启的文件!
  7.  
  8. 范例一:列出目前系统上面所有已经被开启的文件与装置:
  9. [root@www ~]# lsof
  10. COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
  11. init 1 root cwd DIR 3,2 4096 2 /
  12. init 1 root rtd DIR 3,2 4096 2 /
  13. init 1 root txt REG 3,2 38620 1426405 /sbin/init
  14. ....(底下省略)....
  15. # 注意到了吗?是的,在默认的情况下, lsof 会将目前系统上面已经开启的
  16. # 文件全部列出来~所以,画面多的吓人啊!您可以注意到,第一个文件 init 运行的
  17. # 地方就在根目录,而根目录,嘿嘿!所在的 inode 也有显示出来喔!
  18.  
  19. 范例二:仅列出关於 root 的所有程序开启的 socket 文件
  20. [root@www ~]# lsof -u root -a -U
  21. COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
  22. udevd 400 root 3u unix 0xedd4cd40 1445 socket
  23. auditd 4256 root 7u unix 0xedd4c380 9081 socket
  24. audispd 4258 root 0u unix 0xedd4c1e0 9080 socket
  25. # 注意到那个 -a 吧!如果你分别输入 lsof -u root 及 lsof -U ,会有啥资讯?
  26. # 使用 lsof -u root -U 及 lsof -u root -a -U ,呵呵!都不同啦!
  27. # -a 的用途就是在解决同时需要两个项目都成立时啊! ^_^
  28.  
  29. 范例三:请列出目前系统上面所有的被启动的周边装置
  30. [root@www ~]# lsof +d /dev
  31. COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
  32. init 1 root 10u FIFO 0,16 1147 /dev/initctl
  33. udevd 400 root 0u CHR 1,3 1420 /dev/null
  34. udevd 400 root 1u CHR 1,3 1420 /dev/null
  35. udevd 400 root 2u CHR 1,3 1420 /dev/null
  36. # 看吧!因为装置都在 /dev 里面嘛!所以罗,使用搜寻目录即可啊!
  37.  
  38. 范例四:秀出属於 root bash 这支程序所开启的文件
  39. [root@www ~]# lsof -u root | grep bash
  40. bash 20639 root cwd DIR 3,2 4096 648321 /root
  41. bash 20639 root rtd DIR 3,2 4096 2 /
  42. bash 20639 root txt REG 3,2 735004 1199424 /bin/bash
  43. bash 20639 root mem REG 3,2 46680 64873 /lib/libnss_files-2.5.so
  44. ....(底下省略)....

pidof :找出某支正在运行的程序的 PID

  1. [root@www ~]# pidof [-sx] program_name
  2. 选项与参数:
  3. -s :仅列出一个 PID 而不列出所有的 PID
  4. -x :同时列出该 program name 可能的 PPID 那个进程的 PID
  5.  
  6. 范例一:列出目前系统上面 init 以及 syslogd 这两个程序的 PID
  7. [root@www ~]# pidof init syslogd
  8. 1 4286
  9. # 理论上,应该会有两个 PID 才对。上面的显示也是出现了两个 PID 喔。
  10. # 分别是 init 及 syslogd 这两支进程的 PID 啦。

Linux查询已开启文件或已运行进程开启之文件fuser,lsof,pidof的更多相关文章

  1. 使用c#检测文件正在被那个进程占用 判断文件是否被占用的两种方法

    C# 判断文件是否被占用的三种方法 using System.IO; using System.Runtime.InteropServices; [DllImport("kernel32.d ...

  2. 批处理判断是否存在文件,存在则运行另外一个bat文件

    现在需求如下: 使用bat文件判断是否存在ktr文件,存在则运行pan.bat,执行kettle脚本. 代码如下: @echo off @title 批处理判断文件夹是否存在 cd /d F: rem ...

  3. 查阅日志文件:有时候报错信息只是给出了问题的表面现象,要想更深入的了解问题,必须查看相应的日志文件,而日志文件又分为系统日志文件(/var/log)和应用的日志文件,结合这两个日志文件,一般就能定位问题所在。

    作为一名合格的 Linux 运维工程师,一定要有一套清晰.明确的解决故障思路,当问题出现时,才能迅速定位.解决问题,这里给出一个处理问题的一般思路: 重视报错提示信息:每个错误的出现,都是给出错误提示 ...

  4. 第四章-使用本机文件对话框和帮助进程间沟通 | Electron实战

    本章主要内容: 使用Electron的dialog模块实现一个本机打开文件对话框 促进主进程和渲染器进程之间的通信 将功能从主进程暴露给渲染器进程 使用Electron的remote模块从主进程导入功 ...

  5. android studio adb.exe已停止工作(全面成功版 进程的查询和开启)

    先输入adb看是否存在. 如果不存在则:在系统path里添加C:\Users\nubia\AppData\Local\Android\sdk\platform-tools 因为这个目录里有adb 或者 ...

  6. [已解决]下载chromium源码 download_from_google_storage 无法下载文件

    当使用 gclient runhooks 后 出现下面的错误 File gs://chromium-gn/1088992877b3a13f25b61c8fc18e25296d8cab33 for sr ...

  7. linux 查询目录下包含关键字的所有文件

    linux查找目录下的所有文件中是否含有某个字符串 查找目录下的所有文件中是否含有某个字符串 find .|xargs grep -ri "IBM" 查找目录下的所有文件中是否含有 ...

  8. SQLServer 安装以前的某个程序安装已在安装计算机上创建挂起的文件操作 解决办法

    http://wenku.baidu.com/view/6732fe09844769eae009ede2.html SQL Server 安装以前的某个程序安装已在安装计算机上创建挂起的文件操作 安装 ...

  9. 解决 Excel2013打开提示 文件格式和扩展名不匹配。文件可能已损坏或不安全

    有的时候打开xls文档时,会提示“文件格式和扩展名不匹配.文件可能已损坏或不安全.除非您信任其来源,否则请勿打开.是否仍要打开它?” 遇到这种情况,我们需要 1.win键+R键,打开“运行“,输入re ...

随机推荐

  1. Dynamics CRM2016 Web API之Expand related entities & $ref & $count

    本篇介绍两个关于1:N关系中通过主实体取关联子实体的api,这两个api会经常被用到而且比原来的odata方式更加方便,之前如果我们要取主实体下所有的关联实体的记录都是通过Retrieve Multi ...

  2. Android使用shape制作圆形控件及添加弹跳动画

    --------本来为作者原创,未经同意禁止转载 前言:我们在很多时候都需要在res/drawable文件夹下创建相应的xml文件来为控件添加一些样式效果,比如按钮按下时的按钮样式变化.或者指定按钮的 ...

  3. Hadoop与分布式数据处理 Spark VS Hadoop有哪些异同点?

    Spark是一个开源的通用并行分布式计算框架,由加州大学伯克利分校的AMP实验室开发,支持内存计算.多迭代批量处理.即席查询.流处理和图计算等多种范式.Spark内存计算框架适合各种迭代算法和交互式数 ...

  4. Scala actor的使用

    Actor 为什么需要Actor? Actor的本质即万物皆Actor, Actor之间只有发送消息这一种通信方式.例如,无论是管理员让工作者干活,还是工作者把成果交还给管理员,它们之间也要通过发送消 ...

  5. 剑指Offer——携程笔试题+知识点总结

    剑指Offer--携程笔试题+知识点总结 情景回顾 时间:2016.9.17 19:10-21:10 地点:山东省网络环境智能计算技术重点实验室 事件:携程笔试 总体来说,携程笔试内容与其它企业笔试题 ...

  6. 重读COM技术内幕(inside com)有感

    重读COM技术内幕(inside com)有感 面向对象设计哲学在复杂领域并不能很好地解决问题.参考(http://www.richardlord.net/blog/what-is-an-entity ...

  7. UNIX网络编程——利用ARP和ICMP协议解释ping命令

    一.MTU 以太网和IEEE 802.3对数据帧的长度都有限制,其最大值分别是1500和1492字节,将这个限制称作最大传输单元(MTU,Maximum Transmission Unit)      ...

  8. Linux系统编程---实现目录或者文件拷贝

    关于拷贝文件,前面写过一个例子:点击打开链接 ,可以看看,实现cp命令. 这次我们实现一个目录和文件的拷贝,综合点. #include <stdio.h> #include <fcn ...

  9. CONFIGURE ADFS 3.0 WITH SHAREPOINT 2013

     http://blogit.create.pt/miguelmoreno/2014/11/14/configure-adfs-3-0-with-sharepoint-2013/

  10. 【项目管理】 PMBOK 基础概念 (引论 PMBOK 笔记)

    好紧张, 3月28考试, 全力学 PMP ~~ 一. 项目 1. 项目的定义 项目 : 项目是为创造 独特 的 产品, 服务 或 成果 而进行的 临时性 工作; -- 独特 : 独特性是项目的特征, ...