ss命令是现代Linux首选端口排查工具,高效替代netstat;核心命令sudo ss -tulnp可一次性列出所有监听的TCP/UDP端口及对应进程PID和名称,参数含义为:-t查TCP、-u查UDP、-l仅LISTEN态、-n数字直出、-p需sudo显示进程。

ss 命令是现代 Linux 系统中替代 netstat 的首选工具,速度快、资源占用低、功能更精细,尤其适合高并发场景。它默认随 iproute2 安装,无需额外配置,直接可用。
基础监听端口排查
查看所有正在监听的 TCP/UDP 端口(含进程信息),用这一条就够了:
ss -tulnp
参数含义:-t(TCP)、-u(UDP)、-l(仅监听状态)、-n(数字端口,不解析服务名)、-p(显示进程名和 PID)。普通用户需加 sudo 才能看到其他用户的进程。
常见简写组合:
- ss -ltn:只看 TCP 监听端口(无进程信息,无需权限)
- ss -lun:只看 UDP 监听端口
- ss -tlnp | grep :80:快速定位 80 端口被哪个进程占用
精准过滤特定连接
ss 支持类 tcpdump 的表达式语法,比 netstat 的 grep 更可靠:
ss -t state established 'dport = :22' —— 查所有连入本机 22 端口的已建立 SSH 连接
Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...
ss -t state time-wait 'sport = :3306' —— 查 MySQL 主动断开后残留的 TIME-WAIT 连接
常用过滤关键词:
-
src:源地址或源端口(如
src :443) -
dst:目标地址或目标端口(如
dst 192.168.1.100) -
sport/dport:源/目的端口号(支持冒号前缀,如
sport = :8080) -
state:连接状态(
established、listen、time-wait、fin-wait-1等)
连接统计与性能诊断
快速掌握全局网络负载,不用数上万行输出:
ss -s —— 输出精简统计摘要,包括 TCP 总数、ESTAB 数、TIME-WAIT 数、端口使用量等
例如输出中 TCP: 26557 (estab 3163, closed 23182, timewait 23182/0) 能立刻判断是否存在连接堆积或异常关闭。
配合定时监控也很方便:
- watch -n 2 'ss -s':每 2 秒刷新一次统计
- ss -ti:查看 TCP 连接详细信息(RTT、cwnd、retrans、rto 等),用于深度网络调优
常见问题快速应对
遇到典型故障,按步骤执行即可:
-
服务启动失败,提示“Address already in use” → 先跑
sudo ss -tulnp | grep :端口号,确认是否真被占,再看 PID 是否为残留进程 -
某网站响应慢,怀疑连接数打满 →
ss -s查 ESTAB 总数,再ss -t state established | wc -l验证 -
想查某个程序开了哪些端口 →
sudo ss -tunlp | grep 进程名(如grep nginx) -
IPv6 干扰排查 → 加
-4或-6限定协议栈,避免混淆(如ss -tuln4)

















