netstat和awk结合统计TCP状态

系统管理员想了解网络连接的状态时候,经常会使用netstat命令去统计服务器目前的网络连接状态,下面使用netstat和awk结合的一条命令可以很好的统计当前的网络状态。

netstat -n|awk ‘/^tcp/ {++state[$NF]} END {for(key in state) print key," \t" ,state[key]}‘

会得到类似下面的结果,具体数字会有所不同:

TIME_WAIT        441

CLOSE_WAIT       66

ESTABLISHED      521

也就是说,这条命令可以把当前系统的网络连接状态分类汇总。

下面解释一下为啥要这样写:

一个简单的管道符连接了netstat和awk命令。

-----------------------------------------

先来看看netstat:

netstat -n

Active Internet connections (w/o servers)

Proto Recv-Q Send-Q Local Address               Foreign Address             State

tcp        0      0 172.16.1.38:7192            172.16.1.38:8233            TIME_WAIT

你实际执行这条命令的时候,可能会得到成千上万条类似上面的记录,不过我们就拿其中的一条就足够了。

-----------------------------------------

再来看看awk:

/^tcp/

滤出tcp开头的记录,屏蔽udp, socket等无关记录。

state[]

相当于定义了一个名叫state的数组

NF

表示记录的字段数,如上所示的记录,NF等于6

$NF

表示某个字段的值,如上所示的记录,$NF也就是$6,表示第6个字段的值,也就是TIME_WAIT

state[$NF]

表示数组元素的值,如上所示的记录,就是state[TIME_WAIT]状态的连接数

++state[$NF]

表示把某个数加一,如上所示的记录,就是把state[TIME_WAIT]状态的连接数加一

END

表示在最后阶段要执行的命令

for(key in state)

遍历数组

print key," \t" ,state[key]

打印数组的键和值,中间用\t制表符分割,美化一下。

时间: 2024-10-14 08:26:36

netstat和awk结合统计TCP状态的相关文章

统计tcp状态连接数

# netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' ESTABLISHED 471  FIN_WAIT1 3  FIN_WAIT2 52  SYN_SENT 1  TIME_WAIT 725 修改tcp连接时间状态值 tcp_keepalive_time = 30 tcp_keepalive_probes = 9tcp_keepalive_intvl = 75 原文地址:http://blog.51cto.

使用netstat命令统计established状态的连接数

netstat -an|awk -F "[ :]+" '/ESTAB/ {S[$(NF-3)]++}END{for(k in S) print S[k],k}'|sort -rn|head  62 10.19.168.86 15 180.168.234.23 10 10.10.78.165 6 10.9.145.144 2 10.9.119.253 1 127.0.0.1 1 10.9.190.18 1 106.75.53.12 1 10.19.60.128 1 10.19.161.2

用awk数组统计日志访问状况和网络连接状态

统计ip及此ip访问的pv数 #awk '{s[$1]++}END{for(key in s) print key,s[key]}' 12.log | sort -k2rn | head 统计当前网络各种状态的连接数#netstat -na | awk '/^tcp/{s[$6]++}END{for(key in s) print key,s[key]}' 注:awk也支持过滤功能 /^tcp/过滤以tcp开头的行 #netstat -an | grep ESTAB | awk -F "[ :]

awk统计连接状态

1.查出连接状态为ESTABLISH最多的IP连接数,将其封掉. # netstat -antlp|grep 'ESTAB'|awk '{print $5}'|awk -F: '{print $1}'|sort |uniq -c|sort -rn -k 1 2.统计连接状态为ESTABLISH的IP连接数 # netstat -antlp|grep 'ESTAB'|awk '{print $5}'|awk -F: '{print $1}'|sort |uniq -c|sort -rn 3.查出连

统计TCP各状态连接数

法一: netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' 法二: netstat -an | awk '/^tcp/{print $6}' | sort | uniq -c | sort -nr 查看EST状态的连接数: [[email protected] lib]# netstat -an | grep "EST"  | wc -l 例: http://oldboy.blog.51cto.com

nginx大量TIME_WAIT的解决办法 netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

vi /etc/sysctl.conf net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_tw_reuse=1 #让TIME_WAIT状态可以重用,这样即使TIME_WAIT占满了所有端口,也不会拒绝新的请求造成障碍 默认是0 net.ipv4.tcp_tw_recycle=1 #让TIME_WAIT尽快回收 默认0 net.ipv4.tcp_fin_timeout=30 /sbin/sysctl -p 让修改生效 nginx大量TIME_WAIT的解决办法 ne

netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in

#netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'  netstat -n|grep  ^tcp | awk '{++S[$NF]} END {for(a in S) print a, S[a]}' LAST_ACK 14SYN_RECV 348ESTABLISHED 70FIN_WAIT1 229FIN_WAIT2 30CLOSING 33TIME_WAIT 18122 状态:描述CLOSED:无连接是活动

zabbix3.0 使用SS代替netstat无需脚本,1分钟搞定TCP状态监控

这段时间一直忙,没时间好好理下监控,趁着假期有时间,理了一下. 对于zabbix监控TCP状态,在网上查了很多资料,大多数都是使用netstat命令来实现. 如果服务器的压力小,链接少,不会有问题,但随着服务器压力和链接数的增加,用netstat就会造成执行速度慢,server端无法接收到执行结果,造成监控异常. 平时一直用SS,所以试着用SS代替netstat,速度快了不少. 个人较喜欢偷懒,看到网上很多少写了非常长的脚本,又是函数,又是写临时文件的.其实完全没必要,不用写啥脚本,临时文件,很

tcp状态

在服务器的日常维护过程中,会经常用到下面的命令: netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' 它会显示例如下面的信息: TIME_WAIT 814CLOSE_WAIT 1FIN_WAIT1 1ESTABLISHED 634SYN_RECV 2LAST_ACK 1 常用的三个状态是:ESTABLISHED 表示正在通信,TIME_WAIT 表示主动关闭,CLOSE_WAIT 表示被动关闭.具体的状态转化如