lsof 文件描述符排查速查表
lsof(List Open Files)是 Linux/Unix 系统的必备诊断工具,用于列出当前系统打开的文件、管道、网络连接等资源。本速查表涵盖基础用法、网络排查、用户进程分析及高级技巧,还包括 fuser 和 /proc 文件系统的实用命令。
更新: 2026-07-17·27 条命令
概述
lsof(List Open Files)是一个列出进程打开文件的命令行工具。在 Unix/Linux 中一切皆文件,lsof 是排查问题的重要工具。
快速开始
``bash
lsof -i :80 # 查找端口 80 的监听进程
lsof -u username # 列出用户打开的文件
lsof -p PID # 列出进程打开的文件
``
详细用法请参阅下方命令表格。
基本用法(8)
| 命令 | 难度 | ||
|---|---|---|---|
lsof列出当前系统所有打开的文件 | 基础 | lsof | |
lsof +D /path递归列出目录下所有打开的文件 | 中级 | lsof +D /var/log | |
lsof /path/to/file查看哪些进程正在使用某个文件 | 基础 | lsof /var/log/syslog | |
lsof -n -P不解析 DNS 和端口名(加速输出) | 中级 | lsof -n -P -i | |
ls -la /proc/PID/fd/通过 /proc 直接查看进程的文件描述符 | 中级 | ls -la /proc/1234/fd/ | |
ls -la /proc/PID/cwd查看进程的当前工作目录 | 中级 | ls -la /proc/1234/cwd | |
ls -la /proc/PID/exe查看进程的可执行文件路径 | 中级 | ls -la /proc/1234/exe | |
readlink /proc/PID/fd/N查看特定文件描述符指向的目标 | 中级 | readlink /proc/1234/fd/3 |
网络排查(8)
| 命令 | 难度 | ||
|---|---|---|---|
lsof -i列出所有网络连接(IPv4/IPv6) | 基础 | lsof -i | |
lsof -i :port查看特定端口的连接 | 基础 | lsof -i :8080 | |
lsof -i :port1-port2查看端口范围 | 中级 | lsof -i :8000-8100 | |
lsof -iTCP -sTCP:LISTEN列出所有 TCP 监听中的连接 | 中级 | lsof -iTCP -sTCP:LISTEN | |
lsof -iUDP列出所有 UDP 连接 | 中级 | lsof -iUDP | |
lsof -i @host按主机/IP 过滤网络连接 | 中级 | lsof -i @192.168.1.1 | |
lsof -i -sTCP:LISTEN -n -P无 DNS/端口解析的监听列表(常用组合) | 中级 | lsof -i -sTCP:LISTEN -n -P | |
lsof -iTCP -sTCP:ESTABLISHED -n -P查看已建立的 TCP 连接 | 中级 | lsof -iTCP -sTCP:ESTABLISHED -n -P |
用户进程(5)
| 命令 | 难度 | ||
|---|---|---|---|
lsof -u user列出指定用户的打开文件 | 基础 | lsof -u admin | |
lsof -u ^user排除指定用户的文件 | 中级 | lsof -u ^root | |
lsof -c process按进程名前缀查找 | 基础 | lsof -c nginx | |
lsof -p PID查看特定 PID 的打开文件 | 基础 | lsof -p 1234 | |
lsof -p PID1,PID2查看多个 PID 的打开文件 | 中级 | lsof -p 1234,5678 |
高级排查(6)
| 命令 | 难度 | ||
|---|---|---|---|
lsof -F机器可解析的输出格式(用于脚本) | 高级 | lsof -F pcfn | |
lsof | grep DEL查找已删除但仍占用磁盘的『幽灵文件』 | 高级 | lsof | grep DEL | |
lsof -a -u user -iAND 条件组合(同时匹配用户和网络) | 高级 | lsof -a -u admin -i :3000 | |
fuser /path/to/file显示正在使用特定文件或套接字的进程 PID | 中级 | fuser /var/run/docker.sock | |
fuser -k /path杀死使用特定文件/端口的进程 | 高级 | fuser -k 8080/tcp | |
fuser -v /path详细模式显示使用文件的进程信息 | 中级 | fuser -v /var/log/nginx/access.log |
常见问题
本速查表数据整理自各工具官方文档。最后更新: 2026-07-17。