Linux好用命令之lsof命令

艺帆风顺 发布于 2025-04-03 12 次阅读


在 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 NAMEsystemd 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/systemdsystemd 1 root mem REG 253,1 20040 1050452 /usr/lib64/libuuid.so.1.3.0systemd 1 root mem REG 253,1 261336 1051899 /usr/lib64/libblkid.so.1.1.0systemd 1 root mem REG 253,1 90664 1050435 /usr/lib64/libz.so.1.2.7systemd 1 root mem REG 253,1 157424 1050447 /usr/lib64/liblzma.so.5.2.2systemd 1 root mem REG 253,1 23968 1050682 /usr/lib64/libcap-ng.so.0.0.0systemd 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 NAMEnginx 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 NAMEntpd 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指令

    • 命令:

    • 命令:lsof abc.txt 说明:显示开启文件 abc.txt 的进程

    • 命令:lsof -i :80 说明:列出 80 端口目前打开的文件列表

版权声明:本文内容来自个人博客:二丫讲梵,遵循CC 4.0 BY-SA版权协议上原文接及本声明。本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行可。原文链接:https://wiki.eryajf.net/pages/5286.html如有涉及到侵权,请联系,将立即予以删除处理。在此特别鸣谢原作者:二丫讲梵的创作,Powered by 二丫讲梵。本文已获原作者授权发布。此篇文章的所有版权归原作者所有,与本公众号无关,商业转载建议请联系原作者,非商业转载请注明出处。