一、监控命令:netstat
常用参数说明:
-a :列出所有的连接状态,包括 tcp/udp/unix socket 等;
-t :仅列出 TCP 封包的连接;
-u :仅列出 UDP 封包的连接;
-l :仅列出有在 Listen (监听) 的服务的网络状态;
-p :列出 PID 与 Program名;
-c :设置几秒钟后刷新一次,比如 -c 5 每5秒刷新1次
使用举例:
1. 统计服务器监听指定(比如:8888)端口的ip地址的连接数:
netstat -nat|grep ":8888"|awk '/^tcp/{++S[$4]} END {for(a in S) print a,S[a]}'
若要排序,后面加上:| sort| uniq -c|sort -n
2. 统计客户端连接指定(比如:8888)端口的ip地址的连接数,并显示ip地址的地理位置:
netstat -nat|grep ":8888"|awk '/^tcp/{++S[$5]} END {for(a in S) print a,S[a]}'|nali
说明:这里nali是显示ip地址的地理位置的小工具,比如nali IP地址,就会显示出该ip地址的地理位置。
3. 统计tcp连接各状态的数目:
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a,"\t",S[a]}'
4. 更详细的统计tcp连接各状态的数目(包括包括ip地址数目和总共连接数目):
netstat -n | awk '/^tcp/ {n=split($(NF-1),array,":");if(n<=2)++S[array[(1)]];else++S[array[(4)]];++s[$NF];++N} END {for(a in S){printf("%-20s %s\n", a, S[a]);++I}printf("%-20s %s\n","TOTAL_IP",I);for(a in s) printf("%-20s %s\n", a, s[a]);printf("%-20s %s\n","TOTAL_LINK",N);}'
5. 查看所有8888端口的连接数:
netstat -nat|grep -i ":8888"|wc -l
6. 统计所有网络连接数:
netstat -nat|wc -l
7. 对连接的IP按连接数量进行排序:
netstat -nat | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
8. 查看8888端口连接数最多的20个IP:
netstat -nat|grep 8888|grep tcp|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -n20
9. 查看排列最多TIME_WAIT连接的20个IP:
netstat -nat|grep TIME_WAIT|awk '{print $5}'|sort|uniq -c|sort -rn|head -n20