lsof是linux下查看进程打开文件及网络连接的核心工具,可精准定位监听端口的进程,常用命令包括lsof -i :端口、lsof -itcp:端口 -stcp:listen等,并支持-p、-n优化输出,需root权限查看特权端口,容器内需进入执行。

lsof(list open files)是Linux下功能强大的系统诊断工具,不仅能查看进程打开的文件,还能清晰展示网络连接、监听端口及其所属进程。定位监听端口的进程,是排查端口冲突、服务异常或安全审计的关键步骤。
查看指定端口的监听进程
最常用的方式是结合 -i 选项过滤网络相关资源,并用 :端口号 指定目标:
- lsof -i :80 —— 查看所有监听或连接80端口的进程(含TCP/UDP)
- lsof -iTCP:22 -sTCP:LISTEN —— 精确匹配TCP 22端口且状态为LISTEN的进程(避免显示ESTABLISHED连接)
- lsof -i :3306 -P -n —— 显示MySQL默认端口,-P禁用端口名解析(直接显示数字),-n禁用主机名解析(显示IP而非域名),提升响应速度和可读性
识别监听但未绑定到具体IP的进程
有些服务监听 0.0.0.0:端口 或 *:端口,表示接受任意网卡的连接;有些则绑定到 127.0.0.1:端口,仅本地可访问。lsof输出中的 NAME 列会体现绑定地址:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- lsof -i -sTCP:LISTEN | grep ':8080' 可快速筛选出监听8080的条目,观察其ADDRESS字段确认监听范围
- 若看到 127.0.0.1:8080,外部无法访问;若为 *:8080 或 0.0.0.0:8080,则可能对外暴露
获取进程详情与关联文件路径
lsof不仅显示PID,还能进一步查出进程的可执行文件、工作目录及打开的配置文件等关键信息:
- 先获取PID:例如 lsof -t -iTCP:8080 -sTCP:LISTEN(-t只输出PID,适合脚本调用)
- 再查进程完整信息:例如 ps -fp $(lsof -t -iTCP:8080 -sTCP:LISTEN)
- 查该进程打开的所有文件:lsof -p PID,常用于定位配置文件(如nginx.conf)、日志文件或SSL证书路径
常见问题与注意事项
非root用户运行lsof可能看不到其他用户的进程监听信息,尤其涉及特权端口(1–1023)时:
- 普通用户执行 lsof -i :22 可能只显示自己的ssh连接,看不到sshd主进程——需加 sudo
- 某些容器化环境(如Docker)中,宿主机lsof无法直接看到容器内进程的监听细节,应进入容器后执行
- 若lsof提示“command not found”,请先安装:yum install -y lsof(CentOS/RHEL)或 apt install -y lsof(Ubuntu/Debian)










