awk 与shell 查看ip连接数
在现网应用中,尤其是web服务器上经常会遇到需要查看主机IP连接数的情况,而我常用的语句如下:
1# 统计所有
2netstat -an|awk '{if( $5 ~ /[1-255]/)print $5}' |awk -F: '{print $1}'|sort|uniq -c|sort -nr
3# 只统计ESTABLISHED状态的
4netstat -an|grep ESTAB|awk '{print $5}' |awk -F: '{print $1}'|sort|uniq -c|sort -nr
今天网上看到了另一个使用awk处理的脚本,号称速度更快。具体脚本如下:
1# awk 'BEGIN{
2 while("netstat -an"|getline){
3 if( $5 ~ /[1-255]/)
4 {
5 split($5,t1,":");
6 tarr[t1[1]]++;
7 }
8 }
9 for(k in tarr)
10 {
11 print k,tarr[k] | "sort -r -n -k2";
12 }
13};'
$5是netstat –an 第5个字段。默认就是对方连接ip以及端口。
不过在现网处理中,我分别使用上面我常用的语句和网上看到的语句通过time统计对比,并未发现比我使用的快。对比方法如下:
1# time awk 'BEGIN{while("netstat -an"|getline){if( $5 ~ /[1-255]/){split($5,t1,":");tarr[t1[1]]++;}}for(k in tarr){print k,tarr[k] | "sort -r -n -k2";}};'
2# time netstat -an|awk '{if( $5 ~ /[1-255]/)print $5}' |awk -F: '{print $1}'|sort|uniq -c|sort -nr
细想一下也是,awk内部也调用了系统命令sort 。所以理论上来说两者并无不同。不过awk使用的娴熟度倒倒得借鉴学习。这里也记录下吧。
捐赠本站(Donate)
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))
- Author: shisekong
- Link: https://blog.361way.com/awk-shell-count-established/4953.html
- License: This work is under a 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. Kindly fulfill the requirements of the aforementioned License when adapting or creating a derivative of this work.