ss命令因性能优、资源占用少,推荐优先使用;netstat兼容性好但较慢,适用于旧系统。两者均可查看端口状态,常用选项包括-t、-u、-l、-p、-n,ss支持更多过滤方式且响应更快,适合现代环境。

在Linux系统中,查看网络端口状态是系统管理和故障排查中的常见需求。虽然ss和netstat命令都能实现这一功能,但它们的性能、输出格式和使用场景有所不同。下面详细介绍这两个命令的实际用法与区别。
ss命令:现代高效的网络状态查看工具
ss(Socket Statistics)是较新的工具,用来替代netstat。它直接从内核获取信息,因此速度更快,资源占用更少。
常用选项包括:
- -t:显示TCP连接
- -u:显示UDP连接
- -l:列出监听状态的端口
- -p:显示进程信息
- -n:以数字形式显示地址和端口
- -a:显示所有连接(包括监听和非监听)
例如,查看所有TCP监听端口及对应进程:
ss -tlnp输出中,Local Address:Port 表示本地监听的IP和端口,PID/Program name 显示占用端口的进程信息。
netstat命令:传统但广泛兼容的网络工具
netstat(Network Statistics)是较老的工具,功能全面,几乎所有Linux发行版都默认支持。
常用参数有:
- -t:TCP协议
- -u:UDP协议
- -l:监听状态
- -p:显示进程PID和名称
- -n:不解析主机名和服务名
- -a:所有连接状态
查看所有监听端口的命令:
netstat -tulnp该命令会列出当前系统中所有正在监听的网络端口,并附带协议类型、本地地址、进程ID等信息。
ss与netstat的主要区别
尽管两者功能相似,但在实际使用中有明显差异:
- 性能:ss读取/proc/net/和netlink接口,比netstat解析/proc文件更高效
- 依赖性:netstat属于net-tools包,许多新系统已不再默认安装;ss属于iproute2,现代系统普遍预装
- 输出速度:在连接数较多时,ss响应明显更快
- 功能扩展:ss支持更多过滤方式,如按端口范围、状态筛选
实用技巧与常见场景
快速检查某个端口是否被占用:
ss -tnlp | grep :80查看所有ESTABLISHED状态的TCP连接:
ss -t state established使用netstat查看UDP监听情况:
netstat -uln当遇到端口冲突或服务无法启动时,先用ss或netstat确认端口占用情况,再结合kill或重启服务处理。
基本上就这些。日常推荐优先使用ss,响应快且功能更强;若在旧系统维护,netstat仍是可靠选择。









