lsof(list open files)是一个列出当前系统打开文件的工具。

在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口

因为 lsof 需要访问核心内存和各种文件,所以需要root用户执行

  • a 列出打开文件存在的进程
  • c<进程名> 列出指定进程所打开的文件
  • g 列出GID号进程详情
  • d<文件号> 列出占用该文件号的进程

+d<目录>  列出目录下被打开的文件

+D<目录>  递归列出目录下被打开的文件

  • n<目录> 列出使用NFS的文件 - i<条件> 列出符合条件的进程。(4、6、协议、:端口、 @ip )
  • p<进程号> 列出指定进程号所打开的文件
  • u 列出UID号进程详情
  • h 显示帮助信息
  • v 显示版本信息
lsof /bin/bash

lsof -i:8080

lsof -p pid > a.txt

lsof -c nginx
  • 复习 lsof (@2024-01-23)