跳转到主内容
趣航编程网 - 趣学编程,启航技术之路!

linux怎么查看当前连接数_linux统计网络状态【技巧】

当前 ESTABLISHED 连接数可用 netstat -tn --no-header | grep ESTABLISHED | wc -l 或 ss -tn state established | wc -l 获取,后者更快更推荐;需按端口或IP统计时用 ss 配合 awk 等工具聚合分析。 netstat 查当前 ESTABLISHED 连接数(最常用) 多数人想看的是“现在有多少个活跃 TCP 连接”,
netstat
仍是最快上手的工具,尤其在没装
ss
的旧系统上。 执行
netstat -tn | grep ESTABLISHED | wc -l
:只统计 IPv4 的已建立连接,忽略监听、关闭中等状态 加
-6
可查 IPv6:
netstat -t6n | grep ESTABLISHED | wc -l
注意
netstat
在较新发行版(如 Ubuntu 22.04+、CentOS 8+)默认不预装,需手动
sudo apt install net-tools
或
yum install net-tools
输出含表头时会多算一行,用
netstat -tn --no-header | grep ESTABLISHED | wc -l
更稳妥 ss 替代 netstat(推荐用于新环境)
ss
是
netstat
的现代替代,速度快、开销低,且默认随
iproute2
安装,无需额外包。 查 ESTABLISHED 连接:
ss -tn state established | wc -l
想看具体进程归属(需 root):
sudo ss -tunp state established | wc -l
—— 注意
-p
需权限,否则报错
Permission denied
ss
不支持
grep ESTABLISHED
这种模糊匹配,必须用
state established
,写成
state estab
也行,但
state est
就不识别 性能差异明显:在连接数超万时,
ss
耗时通常不到
netstat
的 1/5 按端口或 IP 统计连接来源(定位瓶颈) 单纯总数没意义,真正要查的是“哪个端口被打爆了”或“谁连得最多”。这时候得聚合分析。 看本地 80 端口的并发连接数:
ss -tn sport = :80 state established | wc -l
统计每个远端 IP 的连接数(前 5 名):
ss -tn state established | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head -5
注意
$5
是
ss -tn
输出的第 5 列(对端地址:端口),不同 locale 下列序可能偏移,建议先跑一次
ss -tn | head -2
确认格式 如果日志里看到大量
TIME-WAIT
,别急着调内核参数——先确认是不是短连接高频服务(如 HTTP 轮询),这类场景压测时
ss -tn state time-wait | wc -l
才是关键指标 cat /proc/net/ 直接读取内核连接表(绕过工具开销) 当系统卡顿、
ss
和
netstat
都卡住时,直接读
/proc/net
是唯一可靠方式,但需自己解析。 IPv4 已建立连接数可粗略估算:
wc -l (减 1 是去掉表头)
注意
/proc/net/tcp
包含所有状态,真正
ESTABLISHED
的行,第 4 列是状态码:
01
表示 ESTABLISHED,
0A
是 LISTEN,脚本处理时得 hex 解析 这个文件无锁、无缓存,适合写监控脚本,但别在高 IO 场景下频繁
cat
,它每次读都触发内核遍历,比
ss
更重 常见误判:看到
/proc/net/tcp
行数远大于
ss
输出,大概率是因为包含了
TIME-WAIT
和
CLOSE-WAIT
,不是工具不准,是统计口径不同 实际查问题时,别只盯着总数。连接数突增往往伴随
FIN-WAIT-2
堆积或
SYN-RECV
升高,这些状态才是故障前兆。而
ss -s
输出的汇总统计,比单条命令更值得扫一眼。

相关文章