lsof
列出系统中被进程打开的文件、网络连接和端口占用情况
语法
lsof [options]
参数
| 参数 | 说明 | 示例 | 级别 |
|---|---|---|---|
-i |
列出网络连接(可指定端口) | |
常用 |
-p |
查看指定 PID 打开的文件 | |
常用 |
-u |
查看指定用户打开的文件 | |
常用 |
-t |
只输出 PID(适合脚本) | |
常用 |
+D |
递归查看目录下被打开的文件 | |
常用 |
示例
查看 3000 端口被哪个进程占用
lsof -i :3000
查看所有监听中的端口
lsof -i -P -n | grep LISTEN
杀死占用 8080 端口的进程
kill $(lsof -t -i :8080)
查看 PID 1234 打开的所有文件
lsof -p 1234
查看哪些进程在使用 /var/log 下的文件
lsof +D /var/log/
查看 nginx 用户打开的所有文件
lsof -u nginx
技巧
- 端口冲突排查首选:lsof -i :端口号
- -t 只输出 PID,方便配合 kill 使用
- 文件无法删除(空间不释放)时用 lsof 查看谁在占用
- Linux 中一切皆文件,lsof 能看到网络连接、管道等