推荐优先使用 ss,因其通过 netlink 直接与内核通信,响应快、资源占用低,尤其适合高并发场景;netstat 依赖解析 /proc/net 文件,效率低且在新系统中默认不安装。

Linux 查看端口最常用的是 netstat 和 ss,两者功能相似但底层机制、性能和默认可用性差异明显。现在推荐优先用 ss,尤其在高并发或新系统中。
ss 更快更直接,适合现代系统
ss(Socket Statistics)直接通过 netlink 与内核通信,不依赖解析 /proc/net/ 目录下的文本文件,因此响应更快、资源占用更低。当连接数超过几千时,netstat 可能卡顿甚至超时,而 ss 依然稳定输出。
- 查看所有监听端口:
sudo ss -tuln - 查某端口(如 8080)谁在用:
sudo ss -tulnp sport = :8080 - 查 ESTABLISHED 连接数:
ss -ant | grep ESTAB | wc -l
netstat 更直观但已逐步淘汰
netstat 是传统工具,输出格式统一、字段含义清晰,新手容易理解。但它需要逐行读取 /proc/net/tcp、/proc/net/udp 等文件,本质是“解析文本”,在连接量大或容器密集环境中效率偏低。
- 查看监听端口:
sudo netstat -tuln - 查端口占用进程:
sudo netstat -tulnp | grep :3306 - 统计 TCP 连接数:
netstat -an | grep ESTABLISHED | wc -l
注意:CentOS 8+、Ubuntu 18.04+ 默认不带 netstat,需手动安装 net-tools 包。
怎么选?看场景
日常排查或写脚本,优先用 ss;阅读文档或维护老系统,netstat 仍可信赖;若两者都不可用(如极简容器),可回退到 lsof -i :端口 或 cat /proc/net/tcp(需自行解析十六进制端口号)。
- 想快速知道“谁占了 8080” →
sudo ss -tulnp sport = :8080 - 要兼容旧脚本或教学演示 →
sudo netstat -tulnp - 不确定命令是否存在 → 先
command -v ss或command -v netstat检查
补充:端口是否开放的验证方法
查“本地监听”用 ss/netstat/lsof;查“远程端口通不通”,得用探测命令:
-
nc -zv 192.168.1.100 22—— 看能否连上目标 IP 的 22 端口 -
telnet 127.0.0.1 6379—— 简单 TCP 连通性测试(失败会提示 Connection refused) -
ss -tuln | grep ':6379'—— 仅说明本机是否在监听,不代表外部可访问










