在Linux系统中,查看网络连接数是系统管理和故障排查中的常见需求,连接数包括已建立的连接、监听端口、等待连接等状态,通过相关命令可以快速掌握系统网络活动情况,以下是常用的Linux查看连接数命令及其详细用法,结合实例和表格说明,帮助用户全面理解和应用。

netstat命令
netstat
是传统的网络状态查看工具,功能全面,适用于大多数Linux发行版,基本语法为netstat [选项]
,常用选项及作用如下表所示:
选项 | 作用 | 示例 |
---|---|---|
-a |
显示所有连接(包括监听和未连接的) | netstat -an |
-t |
显示TCP连接 | netstat -tn |
-u |
显示UDP连接 | netstat -un |
-l |
仅显示监听状态的连接 | netstat -ln |
-n |
以数字形式显示地址和端口(避免DNS解析) | netstat -an |
-p |
显示进程ID和进程名(需root权限) | netstat -pan |
-c |
持续动态刷新输出 | netstat -c -an |
实例分析:
- 查看所有TCP连接:
netstat -tn
输出结果中,ESTABLISHED
表示已建立的连接,LISTEN
表示服务正在监听端口。 - 统计当前连接数:
netstat -an | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
该命令按连接状态(如ESTABLISHED
、TIME_WAIT
等)分类统计数量,便于快速分析网络状态。
注意:在较新的Linux发行版中,netstat
可能被ss
命令替代,但部分系统仍保留其兼容性。
ss命令
ss
是netstat
的替代工具,速度更快,功能更强大,尤其在高并发场景下表现优异,基本语法为ss [选项]
,常用选项如下表:

选项 | 作用 | 示例 |
---|---|---|
-a |
显示所有连接 | ss -an |
-t |
显示TCP连接 | ss -tn |
-u |
显示UDP连接 | ss -un |
-l |
仅显示监听连接 | ss -ln |
-n |
数字形式显示地址和端口 | ss -an |
-p |
显示进程信息 | ss -pan |
-s |
汇总连接统计信息 | ss -s |
state |
过滤特定状态的连接 | ss state established |
实例分析:
- 查看TCP连接状态统计:
ss -s
输出包括总连接数、TCP各状态(ESTABLISHED
、SYN_RECV
等)的数量,适合快速概览。 - 查看某个端口的连接数:
ss -tn | grep ':80' | wc -l
统计80端口的TCP连接总数,适用于Web服务器监控。
优势:ss
直接从内核获取网络信息,解析效率高,推荐优先使用。
lsof命令
lsof
(List Open Files)用于列出系统打开的文件,包括网络连接,语法为lsof [选项] [文件名]
,常用选项如下:
选项 | 作用 | 示例 |
---|---|---|
-i |
显示网络连接 | lsof -i |
-i:端口号 |
显示指定端口的连接 | lsof -i:80 |
-P |
不解析端口号为服务名 | lsof -i -P |
-n |
不解析主机名 | lsof -i -n |
实例分析:

- 查看80端口的连接详情:
lsof -i:80
输出包括进程ID、用户、连接状态等信息,适合排查端口占用问题。 - 查看所有TCP连接:
lsof -i -P -n
结合-P
和-n
选项,以数字形式显示所有网络连接,避免DNS解析延迟。
适用场景:当需要关联连接与具体进程时,lsof
是最佳选择。
/proc文件系统
通过读取/proc/net/
下的文件,可直接获取内核中的网络连接数据,适合脚本化处理。
/proc/net/tcp
:TCP连接信息(十六进制格式)。/proc/net/udp
:UDP连接信息。/proc/net/tcp6
:IPv6 TCP连接。
实例分析:
- 统计TCP连接数:
wc -l /proc/net/tcp
输出结果减去首行标题(通常为1)即为实际TCP连接数。 - 解析IPv4 TCP连接:
cat /proc/net/tcp | awk 'NR>1 {print $3}'
提取本地和远程地址信息,需结合十六进制与IP转换工具(如ss
)进一步解析。
注意:/proc
文件系统内容为实时数据,适合自动化脚本,但可读性较差。
综合应用建议
- 快速统计连接数:使用
ss -s
或netstat -an | wc -l
。 - 排查端口占用:结合
ss -tnl | grep ':端口号'
和lsof -i:端口号
定位进程。 - 监控连接状态变化:使用
watch -n 1 "ss -tn"
动态刷新TCP连接。 - 高并发场景:优先选择
ss
,避免netstat
的性能瓶颈。
相关问答FAQs
Q1: 如何查看某个进程占用的连接数?
A1: 可以使用ss -tpn | grep '进程ID或进程名'
或lsof -p 进程ID | grep 'IPv4\|IPv6'
,查看nginx进程的连接数:ss -tpn | grep nginx
,或lsof -p $(pgrep nginx) | grep 'TCP\|UDP'
。
Q2: TIME_WAIT状态的连接过多如何处理?
A2: TIME_WAIT是TCP连接正常关闭的状态,但过多可能影响性能,可通过调整内核参数优化,例如临时生效执行sysctl -w net.ipv4.tcp_tw_reuse=1
(允许重用TIME_WAIT套接字)或sysctl -w net.ipv4.tcp_tw_recycle=1
(启用TIME_WAIT快速回收);永久生效需修改/etc/sysctl.conf
并执行sysctl -p
,检查应用程序是否正确关闭连接,避免频繁短连接。