推荐使用 sudo ss -tulnp 查看所有 tcp/udp 监听端口及对应进程;查具体端口如 8080 用 sudo ss -tulnp | grep ':8080';仅查 tcp 用 sudo ss -tlnp;区分 ipv4/ipv6 分别用 grep '\*:' 或 grep ':::';time_wait/close_wait 状态需单独过滤排查。

Linux 中排查端口占用和服务监听状态,ss 是最推荐的工具——它直接读取内核 socket 数据,速度快、结果准、无需额外安装。
核心命令就一条:sudo ss -tulnp
这个命令能一次性显示所有 TCP/UDP 监听端口,并附带进程名和 PID。只要加了 sudo,你就能看到谁在用哪个端口。
查某个具体端口是否被监听
比如想确认 8080 端口有没有服务在跑:
sudo ss -tulnp | grep ':8080'
输出类似这样:
tcp LISTEN 0 128 *:8080 *:* users:(("node",pid=1234,fd=20))
说明是 node 进程(PID 1234)正在监听 8080。
-
:8080前面的冒号不能省,否则可能匹配到 IP 地址里的8080 - 如果没输出,代表该端口当前没被监听
只看 TCP 监听,排除 UDP 干扰
很多服务只用 TCP,加上 -u 反而让结果变杂:
sudo ss -tlnp
-
-t:TCP -
-l:只显示监听态 -
-n:端口显示数字(不转成http、ssh等名字) -
-p:显示进程(需 root)
比 ss -tulnp 更干净,适合专注 Web、数据库等常见 TCP 服务。
区分 IPv4 和 IPv6 绑定
有些服务只监听 IPv4(0.0.0.0:3306),有些默认绑 IPv6(:::3306)。若发现服务“启不起来”,可能是因为只绑了 IPv6 而客户端连的是 IPv4。
查 IPv4 监听:
sudo ss -tlnp | grep '\*:'
查 IPv6 监听:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
sudo ss -tlnp | grep ':::'
注意 *: 匹配 IPv4 的 *:80,::: 匹配 IPv6 的 :::80。
确认端口是否真被占用(而非假死)
有时进程已退出,但端口还卡在 TIME_WAIT 或 CLOSE_WAIT 状态,导致新服务无法绑定。
查 TIME_WAIT 数量:
ss -tan state time-wait | wc -l
如果远高于几百,可能影响连接复用。
查 CLOSE_WAIT:
ss -tan state close-wait | wc -l
数量多,说明本地方程序没主动关闭 socket,得查对应应用逻辑。
快速释放端口(配合 kill)
拿到 PID 后,可以直接终止:
sudo kill -9 1234
或者一步到位(慎用):
sudo ss -tulnp | grep ':3000' | awk '{print $7}' | cut -d',' -f2 | cut -d'=' -f2 | xargs kill -9
但更稳妥的做法是先 ps -p PID -o pid,comm,args 确认进程用途,再决定是否 kill。
不复杂但容易忽略。










