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. Android Studio下多渠道打包

    Android Studio下实现多渠道打包 直接上步骤 步骤 1. 清单文件添加属性(以友盟统计为例) 在application标签下添加meta-data属性 <application -- ...

  2. 物料分类新增&更新

    --新增 INV_ITEM_CATEGORY_PUB.Create_Category ( p_api_version IN NUMBER, p_init_msg_list IN VARCHAR2 DE ...

  3. SpriteKit中节点的z-position

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交 ...

  4. sybase isql命令参数详解

    isql 实用工具使您得以输入 Transact-SQL 语句.系统过程和脚本文件. 语法 isql [-?] | [-L] | [ { {-U login_id [-P password]} | - ...

  5. Swift中的as操作符

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交 ...

  6. 详解EBS接口开发之销售订单挑库发放

     1. 对销售订单的有效性验证     1)检查销售订单的行是否被完全传回客户化表     2)验证销售订单的关键字段     3)检查子库存是否启用了货位控制,如果启用了货位控制,没有生成货位, ...

  7. 1034. Head of a Gang (30) -string离散化 -map应用 -并查集

    题目如下: One way that the police finds the head of a gang is to check people's phone calls. If there is ...

  8. 存储那些事儿(二): 下一代Linux文件系统BTRFS简介

    BTRFS,通常念成 Butter FS,Better FS 或B-tree FS.下一代的Linux文件系统. 它基于写时拷贝(copy-on-write),支持高效的snapshot和clone. ...

  9. hive的数据导入与数据导出:(本地,云hdfs,hbase),列分隔符的设置,以及hdfs上传给pig如何处理

    hive表的数据源有四种: hbase hdfs 本地 其他hive表 而hive表本身有两种: 内部表和外部表. 而hbase的数据在hive中,可以建立对应的外部表(参看hive和hbase整合) ...

  10. 根据Schema写出XML文档四部曲

    Schema约束文档本身就是一个XML文档,扩展名为xsd 难点:XML文档的根元素怎么写? 如下4步曲: a.首先看Schema文档,找到根元素 <?xml version="1.0 ...