在Linux系统中查看当前网络连接数,需根据具体协议、状态或服务类型进行统计,常用工具包括netstat、ss和/proc文件系统,以下为专业实现方法和扩展内容。

1. ss命令(推荐)
现代Linux系统优先使用ss(Socket Statistics),它比netstat更快且功能更全面:
ss -s # 查看汇总统计
ss -tan | awk 'NR>1 {print $1}' | sort | uniq -c # 统计TCP各状态连接数
2. netstat命令(传统工具)
适用于旧版系统,需安装net-tools包:
netstat -ant | grep -v "LISTEN" | awk 'NR>2 {print $6}' | sort | uniq -c
3. /proc/net/tcp分析
直接解析内核数据(十六进制状态码):
cat /proc/net/tcp | wc -l # 总TCP连接数 grep -c "01" /proc/net/tcp # 统计ESTABLISHED状态连接
| 工具 | 功能 | 执行速度 | 输出复杂度 |
|---|---|---|---|
| ss | 全协议支持 | 极快 | 中等 |
| netstat | 基础统计 | 较慢 | 简单 |
| /proc | 原始数据 | 最快 | 复杂 |
典型TCP连接状态分布示例:
| 状态 | 含义 | 计数命令 |
|---|---|---|
| ESTABLISHED | 活跃连接 | ss -tan state established | wc -l |
| TIME_WAIT | 等待关闭 | ss -tan state time-wait | wc -l |
| CLOSE_WAIT | 远端关闭 | ss -tan state close-wait | wc -l |
1. 动态监控工具
使用watch命令实时观测:
watch -n 1 "ss -s | grep 'TCP:'" # 每秒刷新TCP汇总
2. 连接数趋势分析
通过脚本记录历史数据:
#!/bin/bash while true; do date +%T >> conn.log ss -s | grep "TCP:" >> conn.log sleep 5 done
1. 使用-n禁用DNS解析可加速命令执行
2. 高并发场景优先使用ss避免性能损耗
3. 如需检测特定服务,可通过端口过滤:
ss -s src :80 # HTTP服务连接统计
通过上述方法可精准掌握系统连接状态分布,快速定位端口耗尽、DDoS攻击或应用程序异常等问题,建议结合监控系统实现自动化告警。

查看详情

查看详情