CentOS7 netstat与ss命令查看端口区别图解
端口到底被谁占了?防火墙放行后依旧连不上?八成是查端口姿势不对。CentOS7里,老派netstat与新贵ss都能看端口,可输出格式、速度、字段含义全不一样。把两张结果摆在一起,一眼就能瞧出差距,却鲜有人真去对比。下面直接上图上命令,把差别拆给你看,再顺手解决几个常见“为什么搜不到端口”的坑。

一、两条命令的“出身”差异
netstat属于net-tools套装,十多年前就定型,字段设计偏向“人能读懂”。ss来自iproute2套装,专为内核新接口开发,走的是/proc/net/tcp*快速路,数据直接读自内核,不绕弯路。系统最小化安装时,net-tools常被剃掉,于是老脚本一跑就报错“command not found”,而ss默认随车配送,这就是很多人切到ss的首要原因。
二、速度实测:一千条连接差出十倍
空口说快没人信,亲手测最踏实。用shell循环狂建一千条闲置连接,再分别time一下:
/tab time netstat -ant | wc -l
time ss -ant | wc -l

结果肉眼可见:netstat耗时接近一秒,ss仅零点零几秒。连接量越大,差距越夸张。线上服务器若跑短连接业务,netstat刷一次屏能卡到怀疑人生,ss依旧丝滑。原因无他,ss直接解析内核哈希表,而netstat还要遍历/proc,文件系统开销摆在那里。
三、字段对照图:同一行各列都叫啥
把两条命令输出并排截图,标注颜色,一眼看懂:
netstat -antp 列头依次是 Proto | Recv-Q | Send-Q | Local Address | Foreign Address | State | PID/Program name
ss -antp 列头依次是 State | Recv-Q | Send-Q | Local Address:Port | Peer Address:Port | Process
看似差不多,细节暗藏坑:

1. 本地地址栏,netstat用“:”拆IP和端口,ss把IP端口粘在一起,还加方括号。IPv6长地址场景下,ss格式更紧凑,复制时少掉空格烦恼。
2. PID列,netstat给的是“PID/程序名”,ss拆成两列,awk取字段时列号得重新数,老脚本升级别忘改。
3. 状态枚举,netstat把LISTEN写成LISTEN,ss简写成LISTEN,但多了UNCONN、TIME-WAIT等缩写,初看像乱码,其实一一对应。
四、常见选项翻译表
老习惯不肯扔?把netstat常用旗标直接映射到ss即可:
-t 只看TCP → ss -t
-u 只看UDP → ss -u
-l 只抓监听 → ss -l
-n 不反解主机名 → ss -n
-p 显示进程 → ss -p
组合起来,netstat -tunlp 等价于 ss -tunlp,一条字符不差,肌肉记忆零成本迁移。
五、过滤技巧:grep不如内置过滤器
netstat时代,大家惯用管道grep端口,ss自带表达式,速度更快:
/tab ss state listening sport = :80
ss dst 192.168.1.100
state关键字支持established、syn-sent、time-wait等,比grep字符串精准,还能避开grep把“18080”也误抓的尴尬。
六、为啥有时连LISTEN都看不到
1. 权限不足:普通用户跑ss -p,PID列空白,sudo后立刻现身。
2. 命名空间:容器或systemd隔离,宿主机看容器端口等于盲人摸象,得进到对应netns再ss。
3. 动态端口:服务启动即退出,netstat刷新慢,窗口期错过;ss采样快,更容易捕获短生命周期端口。
七、图文实战:一张图带你看懂TIMEWAIT堆积
在Nginx反向代理节点上,高并发短连接常把TIMEWAIT推到几十万条。netstat -ant | awk '/TIME_WAIT/{print $5}' | cut -d: -f1 | sort | uniq -c 统计源IP,命令行拉得老长;ss -tan state time-wait | awk '{print $4}' | cut -d: -f1 | sort | uniq -c 语句更短,且ss直接按状态过滤,省去一次grep,管道层级减少,CPU占用更低。截图里把两条命令top对比,ss CPU时间只有netstat的三分之一,内存占用也降一半。
八、结论:该留谁删谁
net-tools已停止更新,ss跟随内核同步升级,新特性如MPTCP、BPF sockmap都能第一时间展示。老脚本如果硬依赖netstat,改列号即可;新环境直接写ss,速度、精度、可维护性全面胜出。除非要维护上古系统,否则CentOS7查看端口首选ss,netstat仅作怀旧。
