Linux 服务器端口占用排查总结(ss / lsof / ps 实战)
·
在 Linux 服务器上部署服务(如 Python / vLLM / Web / 模型推理)时,经常会遇到 端口被占用、服务起不来 的问题。本文总结一套 完整、实用、可复现 的端口排查方法。
一、查看服务器所有被占用的端口(核心命令)
✅ 推荐方式:ss(替代 netstat,速度更快)
ss -tunlp
参数说明:
| 参数 | 含义 |
|---|---|
-t | TCP |
-u | UDP |
-n | 不解析域名(更快) |
-l | 仅显示监听中的端口(LISTEN) |
-p | 显示占用端口的进程 |
示例输出:
tcp LISTEN 0 2048 0.0.0.0:8014 0.0.0.0:* users:(("python3.10",pid=1482552,fd=49))
👉 表示:python3.10 进程(PID=1482552)正在监听 8014 端口
二、按端口号排序查看(你博客的重点命令 ⭐)
ss -tunlp | sort -k5
说明:
-
-k5:按第 5 列(Local Address:Port)排序 -
适合端口多、服务多的服务器
-
一眼就能看出端口分布情况(如 8000~9000)
三、只看 TCP / UDP 监听端口(常用精简版)
1️⃣ 只看 TCP
ss -tlnp
2️⃣ 只看 UDP
ss -ulnp
四、精确查询某一个端口是否被占用
方式一:ss
ss -lntp | grep ':8014'
方式二:lsof
lsof -i :8014
示例输出:
python3.10 1482552 hc 49u IPv4 ... TCP *:8014 (LISTEN)
五、通过端口找到“具体运行的程序”
1️⃣ 根据 PID 查看完整启动命令(最关键)
ps -fp 1482552
或(不被截断,最准确):
cat /proc/1482552/cmdline | tr '\0' ' '
可以看到:
-
启动的脚本(如 deploy.py)
-
模型路径
-
端口参数
--port -
推理后端(vllm / torch / etc)
2️⃣ 查看进程的工作目录(定位项目)
ls -l /proc/1482552/cwd
六、查看端口是否正在被使用(连接情况)
ss -antp | grep ':8014'
常见状态说明:
| 状态 | 含义 |
|---|---|
LISTEN | 端口被占用 |
ESTABLISHED | 正在被客户端访问 |
TIME-WAIT | 历史连接,不算占用 |
⚠️ 是否能释放端口,关键看 LISTEN,不是 ESTABLISHED
七、关闭端口的正确姿势(重要)
✅ 结论
端口属于 PID,不属于 PPID
正确操作流程:
# 优雅关闭(推荐)
kill <PID>
# 强制关闭(最后手段)
kill -9 <PID>
❌ 不建议随意 kill PPID(父进程),可能会误杀多个服务。

八、常见排雷总结
-
端口冲突 ≠ 程序冲突,本质是 bind 失败
-
LISTEN才是真正占用端口 -
Docker / vLLM / 多实例部署会同时占用多个端口
-
GPU 推理服务起不来,有时是 显存不足,而不是端口问题
九、推荐记住的“黄金命令组合” ⭐
# 1. 查看所有监听端口(并排序)
ss -tunlp | sort -k5
# 2. 查具体端口
ss -lntp | grep ':PORT'
# 3. 定位程序
ps -fp PID
十、结语
通过 ss + lsof + ps 的组合,可以在 1 分钟内完成端口 → 进程 → 项目 → 是否可关闭 的完整定位,非常适合服务器排障和模型部署场景。
更多推荐




所有评论(0)