lsof 命令速查表
把 lsof 命令最常用的查找条件整理成速查表,排查端口占用和文件锁时对照查。
返回 系统与运维按进程查找 By Process 5
lsof -p 1234查看指定 PID 打开的文件
lsof -c nginx查看 nginx 进程打开的文件
lsof -c /^nginx/正则匹配进程名
lsof -u tom查看指定用户打开的文件
lsof -u ^root排除 root 用户
按端口查找 By Port 5
lsof -i :80查看占用 80 端口的进程
lsof -i :8080 -i :8443查看多个端口
lsof -i tcp:80只查看 TCP 80 端口
lsof -i udp:53只查看 UDP 53 端口
lsof -i @192.168.1.1:80查看指定 IP 和端口
按文件查找 By File 4
lsof /var/log/syslog查看谁打开了指定文件
lsof +D /var/log/查看目录下所有打开的文件
lsof +d /var/log/只查看当前目录(不递归)
lsof /dev/sda1查看谁在使用指定设备
网络连接 Network 6
lsof -i查看所有网络连接
lsof -i -n不解析域名(更快)
lsof -i -P不解析端口名(显示数字端口)
lsof -i -n -P组合使用(最快)
lsof -i tcp@192.168.1.1:22查看到指定主机的 SSH 连接
lsof -i -sTCP:ESTABLISHED只查看已建立的连接
按文件类型 By Type 4
lsof -t只输出 PID(方便管道处理)
lsof -F pfc输出格式化的字段(PID/命令/用户)
lsof -a -p 1234 -c nginxAND 组合条件
lsof -Or -p 1234 -p 5678OR 组合条件
常见排障场景 Troubleshooting 5
lsof -i :80 | grep LISTEN查看 80 端口监听进程
lsof +L1查看已删除但仍被打开的文件(磁盘满时用)
lsof -nP -iTCP -sTCP:LISTEN查看所有监听中的 TCP 端口
lsof -i :22 | grep ESTABLISHED查看已建立的 SSH 连接
lsof -u tom | wc -l统计用户打开的文件数
💡 提示
- lsof 需要 root 权限才能查看所有用户的文件,普通用户只能看自己的。
- 端口占用排查:先用 lsof -i :port 找到 PID,再用 kill 杀进程或改配置。
- 磁盘满但找不到大文件时,用 lsof +L1 找已删除但仍被进程占用的文件。