超详细!Linux 解决 address already in use ,ss/netstat 命令全流程
Linux系统查看端口占用及释放方法摘要 在Ubuntu/Linux系统中,可通过ss(推荐)或netstat命令查看端口占用情况。关键命令: 查看所有端口:ss -tuln 或 netstat -tuln 查看进程信息:sudo ss -tulnp 查找特定端口:ss -tulnp | grep 端口号 释放端口步骤: 查找进程ID:sudo ss -tulnp | grep 端口号 终止进程:
查看 Linux 系统端口占用及对应进程
在 Ubuntu/Linux 系统中,查看当前系统中地址和端口的使用情况(即哪些进程在监听哪些端口),最常用的命令是 netstat 和 ss,其中 ss 是更现代、效率更高的工具。以下是具体用法:
1. 使用 ss 命令(推荐)
ss(Socket Statistics)是替代 netstat 的新工具,功能更强大,速度更快。
- 查看所有正在使用的端口(包括 TCP、UDP):
|
ss -tuln |
选项说明:
-
- -t:显示 TCP 端口
- -u:显示 UDP 端口
- -l:只显示监听状态的端口(即正在被进程使用的端口)
- -n:以数字形式显示 IP 地址和端口(不解析域名,速度更快)
- 查看端口对应的进程信息:
加上 -p 选项可以显示占用端口的进程 ID(PID)和进程名:
|
sudo ss -tulnp |
(需要 sudo 权限才能看到所有进程的详细信息)
2. 使用 netstat 命令(传统工具)
netstat 是经典工具,部分系统可能默认不安装,若缺失可通过 sudo apt install net-tools 安装。
- 查看所有监听端口:
|
netstat -tuln |
选项含义与 ss 相同:-t(TCP)、-u(UDP)、-l(监听)、-n(数字形式)。
- 查看端口对应的进程:
|
sudo netstat -tulnp |
3. 查找特定端口的使用情况
如果想查询某个具体端口(例如 8080)是否被占用,可结合 grep 过滤:
|
# 用ss查询 ss -tulnp | grep 8080 # 用netstat查询 netstat -tulnp | grep 8080 |
输出结果中,LISTEN 状态表示端口正在被监听(已占用),同时会显示对应的 IP 地址(如 0.0.0.0 表示监听所有网卡,127.0.0.1 表示仅本地可访问)和进程信息。
关闭并释放指定端口的步骤
在 Linux 系统中,要关闭并释放指定端口,需要先找到占用该端口的进程,然后终止对应的进程。以下是具体步骤:
步骤 1:查找占用端口的进程 ID(PID)
使用 ss 或 netstat 命令,结合端口号查找对应的进程 ID。
例如,要查找占用 8080 端口 的进程:
|
# 方法1:使用ss(推荐) sudo ss -tulnp | grep 8080 # 方法2:使用netstat(需安装net-tools) sudo netstat -tulnp | grep 8080 |
输出示例(以 ss 为例):
|
tcp LISTEN 0 128 0.0.0.0:8080 0.0.0.0:* users:(("java",pid=1234,fd=10)) |
其中 pid=1234 就是占用 8080 端口的进程 ID。
步骤 2:终止该进程以释放端口
使用 kill 命令终止进程,释放端口:
|
# 基本用法:kill + 进程ID sudo kill 1234 |
- 如果进程无法正常终止(如无响应),可使用强制终止命令:
|
sudo kill -9 1234 # -9表示强制终止 |
步骤 3:验证端口是否已释放
再次查询端口,确认已释放:
|
ss -tulnp | grep 8080 # 无输出则表示端口已释放 |
总结流程(以 8080 端口为例)
- 快速查看所有端口占用:ss -tuln 或 netstat -tuln
- 查看端口对应的进程:sudo ss -tulnp(推荐,更高效)
- 查找特定端口:在上述命令后加 | grep 端口号
- 查进程:sudo ss -tulnp | grep 8080 → 得到 PID(如 1234)
- 杀进程:sudo kill -9 1234
- 验结果:ss -tulnp | grep 8080
通过这些命令,可以清晰了解系统中哪些 IP 地址和端口正在被使用,以及对应的进程信息,方便排查端口冲突等问题。
更多推荐



所有评论(0)