HCRM博客

CentOS 7 下 netstat 与 ss 命令端口查看对比图解

CentOS7 netstat与ss命令查看端口区别图解

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

CentOS 7 下 netstat 与 ss 命令端口查看对比图解-图1

一、两条命令的“出身”差异

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

CentOS 7 下 netstat 与 ss 命令端口查看对比图解-图2

结果肉眼可见: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

看似差不多,细节暗藏坑:

CentOS 7 下 netstat 与 ss 命令端口查看对比图解-图3

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仅作怀旧。

本站部分图片及内容来源网络,版权归原作者所有,转载目的为传递知识,不代表本站立场。若侵权或违规联系Email:zjx77377423@163.com 核实后第一时间删除。 转载请注明出处:https://blog.huochengrm.cn/pc/41721.html

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
请登录后评论...
游客游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~