Linux netstat用法

常见参数

-a (all)显示所有选项,默认不显示LISTEN相关
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化成数字。
-l 仅列出有在 Listen (监听) 的服務状态

-p 显示建立相关链接的程序名
-r 显示路由信息,路由表
-e 显示扩展信息,例如uid等
-s 按各个协议进行统计
-c 每隔一个固定时间,执行该netstat命令。

提示:LISTEN和LISTENING的状态只有用-a或者-l才能看到

常用命令

1)统计不同类型的tcp connection
netstat -an | awk '/^tcp/ {++S[$NF]} END {for(a in S) print S[a],a}'|sort -rn

2)只看ESTABLISH的数量
netstat -an | awk '/ESTABLISHED/ {S[$NF]++} END {for(a in S) print S[a]}'
netstat -an|awk '/ESTABLISHED/ {print $6}'|sort|uniq -c

3)只看time wait数量
netstat -an|awk '/TIME_WAIT/ {print $6}'|sort|uniq -c

4)看前20的tcp相关的 IP数量
netstat -an |grep 'ESTABLISHED' |awk '{print $5}'|awk -F ':' '{print $1}'|sort|uniq -c|sort -rn|head -20
netstat -n|awk '/^tcp/ {print $5}'|awk -F : '{print $1}'|awk '{print $1}'|sort|uniq -c|sort -rn|head -20
或用下面这个性能更好的方法
awk 'BEGIN{while("netstat -an"|getline){if( $5 ~ /[1-255]/){split($5,t1,":");tarr[t1[1]]++;}}for(k in tarr){print tarr[k],k | "sort -rn";}};'|head -20

一个简单 for  loop 观察链接数变化,以及链接数前20的IP

while true;do uptime;netstat -an | awk '/ESTABLISHED/ {S[$NF]++} END {for(a in S) print S[a]}';awk 'BEGIN{while("netstat -an"|getline){if( $5 ~ /[1-255]/){split($5,t1,":");tarr[t1[1]]++;}}for(k in tarr){print tarr[k],k | "sort -rn";}};'|head -20;sleep 20;done

谢谢大家

原文地址:https://www.cnblogs.com/faberbeta/p/12981880.html