sudo ss -tuln 是查看 linux 监听端口最准最快的方式,直接读取内核 socket 表,预装且实时可靠;常用变体包括 ss -tln(仅 tcp)、ss -tulnp(带进程信息)、ss -tuln | grep ':8080'(查指定端口)。

直接运行 sudo ss -tuln 就能看到所有正在监听的 TCP 和 UDP 端口。
这个命令最准、最快,是当前 Linux 发行版默认推荐的方式。它绕过用户态解析,直接读取内核 socket 表,结果实时可靠,且大多数系统已预装,无需额外安装。
常用组合与说明:
只看 TCP 监听端口(排除 UDP 干扰):
sudo ss -tln
linux-performance-analyzer下载Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
同时显示进程信息(需 root 权限):
sudo ss -tulnp
输出中会带users:(("进程名",pid=xxx,fd=xx)),清楚标明哪个程序在用哪个端口。快速检查某端口是否被监听(比如 8080):
sudo ss -tuln | grep ':8080'
注意加英文冒号和引号,避免匹配到 80800 或其他相似端口。
为什么不用 netstat?
netstat 虽然参数直观(如 `sudo netstat -tuln`),但它依赖用户态解析,在新系统中常未预装,且性能略低。部分发行版(如 Ubuntu 22.04+、CentOS Stream)已将其标记为废弃。若环境不支持 ss,再考虑安装 `net-tools` 后使用 netstat。需要知道是谁在用端口?用 lsof
当你要精准定位进程归属(比如排查端口冲突),`lsof` 更直观:查所有监听中的 TCP 端口及对应进程:
sudo lsof -i -P -n -s TCP:LISTEN查特定端口(如 3306)的完整占用信息:
sudo lsof -i :3306只输出 PID(方便后续 kill):
sudo lsof -t -i :22
注意监听地址含义
输出中常见几种本地地址格式:-
0.0.0.0:80或*:80:监听本机所有 IPv4 地址,外部可访问 -
127.0.0.1:3000:仅本地回环访问,外部连不上 -
:::22:监听所有 IPv6 地址 -
[::1]:631:仅 IPv6 回环,类似 127.0.0.1
端口是否“开放”不仅取决于监听状态,还受防火墙(如 firewalld、ufw、iptables)控制。监听 ≠ 外部可达,必要时还需查防火墙规则,例如:sudo firewall-cmd --list-ports(firewalld)
或sudo ufw status verbose(ufw)
不复杂但容易忽略。










