Linux好用命令之lsof命令

在 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指令
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CN-FuWei

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值