• 对于注定会优秀的人来说,他所需要的,只是时间!
  • 手懒得,必受贫穷,手勤的,必得富足----《圣经》
  • 帮助别人,成就自己。愿君在本站能真正有所收获!
  • 如果你在本站中发现任何问题,欢迎留言指正!
  • 宝剑锋从磨砺出,梅花香自苦寒来!

<四>Linux好用命令之lsof命令

好用命令 eryajf 1个月前 (10-24) 135°C 已收录 0个评论
本文预计阅读时间 11 分钟

在 CentOS/Fedora/RHEL 版本的 Linux 中则使用下面的命令进行安装。

yum install lsof

lsof也是有着最多选项的 Linux/Unix 命令之一。lsof可以查看打开的文件是:

  • 普通文件
  • 目录
  • 网络文件系统的文件
  • 字符或设备文件
  • (函数) 共享库
  • 管道、命名管道
  • 符号链接
  • 网络文件(例如:NFS file、网络 socket,unix 域名 socket)
  • 还有其它类型的文件,等等

虽然lsof命令有着 N 多的选项,但是常用的只有以下几个:

  • -a:使用 AND 逻辑,合并选项输出内容
  • -c:列出名称以指定名称开头的进程打开的文件
  • -d:列出打开指定文件描述的进程
  • +d:列出目录下被打开的文件
  • +D:递归列出目录下被打开的文件
  • -n:列出使用 NFS 的文件
  • -u:列出指定用户打开的文件
  • -p:列出指定进程号所打开的文件
  • -i:列出打开的套接字

总的说来,lsof命令还是一个比较复杂的命令,那么多选项,用起来还是蛮累的,但是这不能否定它是一个出色的工具,一个我们不得不学习的命令。下面就来说一些lsof的惯用用法。
– 命令:

lsof

输出:

COMMAND     PID   TID    USER   FD      TYPE             DEVICE   SIZE/OFF       NODE NAME
systemd       1          root  cwd       DIR              253,1       4096          2 /
systemd       1          root  rtd       DIR              253,1       4096          2 /
systemd       1          root  txt       REG              253,1    1523568    1053845 /usr/lib/systemd/systemd
systemd       1          root  mem       REG              253,1      20040    1050452 /usr/lib64/libuuid.so.1.3.0
systemd       1          root  mem       REG              253,1     261336    1051899 /usr/lib64/libblkid.so.1.1.0
systemd       1          root  mem       REG              253,1      90664    1050435 /usr/lib64/libz.so.1.2.7
systemd       1          root  mem       REG              253,1     157424    1050447 /usr/lib64/liblzma.so.5.2.2
systemd       1          root  mem       REG              253,1      23968    1050682 /usr/lib64/libcap-ng.so.0.0.0
systemd       1          root  mem       REG              253,1      19888    1050666 /usr/lib64/libattr.so.1.1.0

输出内容详解:

  • COMMAND:进程的名称
  • PID:进程标识符
  • TID:线程标识符
  • USER:进程所有者
  • FD:文件描述符,应用程序通过文件描述符识别该文件,一般有以下取值:
    • cwd:表示 current work dirctory,即:应用程序的当前工作目录,这是该应用程序启动的目录
    • txt:该类型的文件是程序代码,如应用程序二进制文件本身或共享库
    • lnn:library references (AIX)
    • er:FD information error (see NAME column)
    • jld:jail directory (FreeBSD)
    • ltx:shared library text (code and data)
    • mxx:hex memory-mapped type number xx
    • m86:DOS Merge mapped file
    • mem:memory-mapped file
    • mmap:memory-mapped device
    • pd:parent directory
    • rtd:root directory
    • tr:kernel trace file (OpenBSD)
    • v86:VP/ix mapped file
    • 0:表示标准输出
    • 1:表示标准输入
    • 2:表示标准错误
  • TYPE:文件类型,常见的文件类型有以下几种:
    • DIR:表示目录
    • CHR:表示字符类型
    • BLK:块设备类型
    • UNIX:UNIX 域套接字
    • FIFO:先进先出 (FIFO) 队列
    • IPv4:网际协议 (IP) 套接字
  • DEVICE:指定磁盘的名称
  • SIZE/OFF:文件的大小
  • NODE:索引节点(文件在磁盘上的标识)
  • NAME:打开文件的确切名称
    • 命令:lsof abc.txt
      说明:显示开启文件 abc.txt 的进程
    • 命令:lsof -i :80
      说明:列出 80 端口目前打开的文件列表

    输出:

    COMMAND     PID  USER   FD   TYPE    DEVICE SIZE/OFF NODE NAME
    nginx      8838  root    8u  IPv4 114512623      0t0  TCP *:http (LISTEN)
    nginx     12886 jelly    8u  IPv4 114512623      0t0  TCP *:http (LISTEN)
    nginx     12887 jelly    8u  IPv4 114512623      0t0  TCP *:http (LISTEN)
    
    • 命令:
    lsof -i
    

    说明:列出所有的网络连接
    输出:

    COMMAND     PID  USER   FD   TYPE    DEVICE SIZE/OFF NODE NAME
    ntpd        856   ntp   16u  IPv4     13105      0t0  UDP *:ntp 
    ntpd        856   ntp   17u  IPv6     13106      0t0  UDP *:ntp 
    ntpd        856   ntp   18u  IPv4     13210      0t0  UDP localhost:ntp 
    ntpd        856   ntp   19u  IPv4     13211      0t0  UDP jellythink:ntp 
    vsftpd     1613  root    3u  IPv6     17867      0t0  TCP *:ftp (LISTEN)
    php-fpm    4037 jelly    0u  IPv4  60908335      0t0  TCP localhost:cslistener (LISTEN)
    sshd       8503  root    3u  IPv4    197060      0t0  TCP *:50022 (LISTEN)
    nginx      8838  root    8u  IPv4 114512623      0t0  TCP *:http (LISTEN)
    nginx      8838  root    9u  IPv4 114512624      0t0  TCP *:https (LISTEN)
    php-fpm    9059 jelly    0u  IPv4  60908335      0t0  TCP localhost:cslistener (LISTEN)
    php-fpm    9137 jelly    0u  IPv4  60908335      0t0  TCP localhost:cslistener (LISTEN)
    
    • 命令:lsof -i tcp
      说明:列出所有的 TCP 网络连接信息
    • 命令:lsof -i udp
      说明:列出所有的 UDP 网络连接信息
    • 命令:lsof -i tcp:80
      说明:列出 80 端口 TCP 协议的所有连接信息
    • 命令:lsof -i udp:25
      说明:列出 25 端口 UDP 协议的所有连接信息
    • 命令:lsof -c ngin
      说明:列出以 ngin 开头的进程打开的文件列表
    • 命令:lsof -p 20711
      说明:列出指定进程打开的文件列表
    • 命令:lsof -u uasp
      说明:列出指定用户打开的文件列表
    • 命令:lsof -u uasp -i tcp
      说明:将所有的 TCP 网络连接信息和指定用户打开的文件列表信息一起输出
    • 命令:lsof -a -u uasp -i tcp
      说明:将指定用户打开的文件列表信息,同时是 TCP 网络连接信息的一起输出;注意和上一条命令进行对比
    • 命令:lsof +d /usr/local/
      说明:列出目录下被进程打开的文件列表
    • 命令:lsof +D /usr/local/
      说明:递归搜索目录下被进程打开的文件列表
    • 命令:lsof -i @peida.linux:20,21,22,25,53,80 -r 3
      说明:列出目前连接到主机 peida.linux 上端口为 20,21,22,25,53,80 相关的所有文件信息,且每隔 3 秒不断的执行lsof指令

原文地址:http://t.cn/AiOgYZox


weinxin
扫码订阅本站,第一时间获得更新
微信扫描二维码,订阅我们网站的动态,另外不定时发送WordPress小技巧,你可以随时退订,欢迎订阅哦~

二丫讲梵 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明<四>Linux好用命令之lsof命令
喜欢 (0)
[如果想支持本站,可支付宝赞助]
分享 (0)
eryajf
关于作者:
学无止境,我愿意无止境学。书山有路,我愿意举身投火,淬炼成金!永远不要忘记,激情的奋进,就是美好的未来!

您必须 登录 才能发表评论!