liunx查看nginx apache的tcp连接数

web服务器日常维护中,经常需要查看tcp端口的连接数,虽然现在的云服务器自己都有监控web或者app,但为了加深shell技巧,给大家介绍几个liunx查看tcp连接数的shell命令


本文主要是介绍shell常用的操作技巧 如果只需要能够运行的命令 下面的随便粘贴一个都可以


先看网上很容易能搜索到的

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

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

一共有两条,实际上是同样的一条,通过awk的数组来完成,awk命令大部分人因该很熟悉,初学者理解起来有点困难 ,然后我来拆分说明


首先要知道awk默认按行读取,然后是awk的几个内置变量 常用的也就下面几个

NF      代表是每行的字段数量

NR      代表已读取的行数 读第一行的时候是1 第二行的时候就是2了  所以你如果不想读取第一行 你可以 awk '{if(NR!=1){print $0}}'

$0          代表整行

$1-$n     代表每行的第1-n个字断

然后就很好理解了   

awk '/^tcp/' 等同于 grep tcp


然后你会发现最后一个字断为tcp状态   $NF代表最后一个字断   而++S(++state)换成php代码会更好理解

$result = []
$a = [a,b,b,c,c,a,b,a,a,c];

foreach($a as $v){
    $result[$v]++;
}

print_r($v);

由于可选值直有a b c利用数组的键唯一的特性做累加处理 最后的
END {for(a in S) print a, S[a]}
是等待读取完毕后便利数组的键值即可


shell工具很多  很多工具互相搭配起来可以起到不同效果   介绍另外一种方式 比较容易理解

netstat -n | grep tcp | awk '{print $NF}' | sort | uniq -c

首先将tcp信息的最后一个字段输出  然后排序 最后使用uniq去重复  也可以得到和上述相同的效果


主要技巧就是按列读取  然后统计就方便了  sed cut命令也可以实现  不过awk简单点


最后贴出tcp几个状态代表什么  顺便学习下

CLOSED:无连接是活动的或正在进行

LISTEN:服务器在等待进入呼叫

SYN_RECV:一个连接请求已经到达,等待确认

SYN_SENT:应用已经开始,打开一个连接

ESTABLISHED:正常数据传输状态

FIN_WAIT1:应用说它已经完成

FIN_WAIT2:另一边已同意释放

ITMED_WAIT:等待所有分组死掉

CLOSING:两边同时尝试关闭

TIME_WAIT:另一边已初始化一个释放

LAST_ACK:等待所有分组死掉




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值