linux下lsof程序简介

1、简介

      lsof(list open files)是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。


2、详细解释

     在终端下输入lsof即可显示系统打开的文件,因为 lsof 需要访问核心内存和各种文件,所以必须以 root 用户的身份运行它才能够充分地发挥其功能。
2.1 显示示例
     COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
     init 1 root cwd DIR 3,3 1024 2 /
     init 1 root rtd DIR 3,3 1024 2 /
     init 1 root txt REG 3,3 38432 1763452 /sbin/init
     init 1 root mem REG 3,3 106114 1091620 /lib/libdl-2.6.so
     init 1 root mem REG 3,3 7560696 1091614 /lib/libc-2.6.so
     init 1 root mem REG 3,3 79460 1091669 /lib/libselinux.so.1
     init 1 root mem REG 3,3 223280 1091668 /lib/libsepol.so.1
     init 1 root mem REG 3,3 564136 1091607 /lib/ld-2.6.so
     init 1 root 10u FIFO 0,15 1309 /dev/initctl
2.2 各列解释
     每行显示一个打开的文件,若不指定条件默认将显示所有进程打开的所有文件。lsof输出各列信息的意义如下:
     COMMAND:进程的名称
     PID:进程标识符
     USER:进程所有者
     FD:文件描述符,应用程序通过文件描述符识别该文件。如cwd、txt等
     TYPE:文件类型,如DIR、REG等
     DEVICE:指定磁盘的名称
     SIZE:文件的大小
     NODE:索引节点(文件在磁盘上的标识)
     NAME:打开文件的确切名称
2.3 补充
     其中FD 列中的文件描述符cwd 值表示应用程序的当前工作目录,这是该应用程序启动的目录,除非它本身对这个目录进行更改。txt 类型的文件是程序代码,如应用程序二进制文件本身或共享库,如上列表中显示的 /sbin/init 程序。其次数值表示应用程序的文件描述符,这是打开该文件时返回的一个整数。如上的最后一行文件/dev/initctl,其文件描述符为10
u 表示该文件被打开并处于读取/写入模式,而不是只读 或只写 (w) 模式。同时还有大写 的W 表示该应用程序具有对整个文件的写锁。该文件描述符用于确保每次只能打开一个应用程序实例。初始打开每个应用程序时,都具有三个文件描述符,从 0 到 2,分别表示标准输入、输出和错误流。所以大多数应用程序所打开的文件的 FD 都是从 3 开始。

    与 FD 列相比,Type 列则比较直观。文件和目录分别称为 REG 和 DIR。而CHR 和 BLK,分别表示字符和块设备;或者 UNIX、FIFO 和 IPv4,分别表示 UNIX 域套接字、先进先出 (FIFO) 队列和网际协议 (IP) 套接字。


3、语法

     lsof [-?ahlnNPRsv][-c c][+|-d d][+|-D D][-g [s]] [+|-L [I]][-p s][+|-r [t]][-u s][names] 
    参数说明:若没有加上任何参数,lsof会列出所有被程序开启的文件。 
    -? -h 这两个参数意思相同,显示出lsof的使用说明 -a 参数被视为AND,会影响全部的参数 
    -C c 显示出以字符或字符串c开头的命令程序开启的文件,如$lsof -C init 
    +d s 在文件夹s下搜寻,此参数不会继续深入搜寻此文件夹。如显示在/usr/local下被程序开启的文件:$lsof +d /usr/local +D D 同上,但是会以该文件为基础往下全部搜寻,这样花费较大的CPU时间,请谨慎使用 
    -d s 此参数以file descriptor(FD)值显示结果,可以采用范围(1-3)或个别,如显示FD为4的进程:$lsof -d 4 
    -g [s] 以程序的PGID显示,也可以采用范围或个别表示,若没有特别指定,则显示全部,如显示PGID为6的进程:$lsof -g 6 
    -i 用以监听有关的任何符合的地址,若没有相关地址被指定,则监听全部 
            语法: lsof -i [46][protocol][@hostname|hostaddr][:serivce|port] 
            说明: 46  IPv4 or IPv6 
                        protocol TCP or UDP 
                        hostname internet host name 
                        hostaddr IPv4地址 
                        service /etc/service中的service name 
                        port 端口号 
    -l 此参数禁止将user ID 转换为登录的名称,默认是登录名称 
    +|-L [l] +或-表示开启或关闭显示文件连接数,如果只有单纯的+L,后面没有任何数字,则表示显示全部,如果后面有数字,只有文件连接数少于该数字的会被列出 
    -n 不将IP地址转换为hostname,预设是转换的 
    -N 显示NFS的文件 
    -p s 以PID作为显示的依据 
    -P 此参数禁止将port number转换为service name,预设为转换 
    +|-r [t] 控制lsof不断重复执行,t为15秒,也就是说每隔15秒再重复执行 +r 一直执行,直到没有文件被显示 -r 永远    不断的执行,直到收到中断讯号(ctrl+ c) 
    -R 此参数增列出PID的子程序,也就是PPID 
    u s 列出login name或UID为的程序 
    -v 显示lsof的版本信息 


参考文献:百度百科和http://linux.chinaunix.net/techdoc/system/2007/12/20/974736.shtml

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值