- // 用jps命令,显示所有JAVA进程。
- # jps
- 18374 DesktopServerLauncher
- 14690 Bootstrap
- 23211 Jps
- //除了jps那行,其余全是JAVA进程。
- // 用netstat命令,显示进程ID和程序名(p);然后用grep命令找出进程18374;然后用head命令显示前3行。
- # netstat -antp | grep 18374 | head -3
- tcp 0 0 :::54104 :::* LISTEN 18374/java
- tcp 0 0 ::ffff:115.238.54.116:54104 ::ffff:5.127.6.211:33040 ESTABLISHED 18374/java
- tcp 0 0 ::ffff:120.199.8.215:54104 ::ffff:223.73.28.27:3784 ESTABLISHED 18374/java
- //最后一列里的18374,就是JAVA程序的端口号。
- // 查看端口号为54104的链接数。好多啊。要好好查查了。
- # netstat -ant | grep ":54104" | wc -l
- 7177
- // 用netstat命令查看网络链接;用head命令,显示其前3行(参数为-3),便于查看每列是啥意思。
- // 参数-a表示所有(All)链接;-t表示TCP,-n只显示数字(Number),不转成主机名,这样速度快。
- # netstat -ant | head -3
- Active Internet connections (servers and established)
- Proto Recv-Q Send-Q Local Address Foreign Address State
- tcp 0 0 0.0.0.0:50222 0.0.0.0:* LISTEN
- // 我们发现,最后一列(NF)是状态。下面就可以按状态进行统计了。
- // 用awk命令提取出第6列;然后用sort命令排序;然后用uniq命令统计(c);最后再按数值(n)倒序(r)排列。
- # netstat -ant | grep ":54104" | awk '{print $NF}' | sort | uniq -c | sort -nr
- 5248 TIME_WAIT
- 655 FIN_WAIT1
- 539 FIN_WAIT2
- 321 ESTABLISHED
- 107 CLOSING
- 64 SYN_RECV
- 36 LAST_ACK
- 1 LISTEN
- 1 CLOSE_WAIT
- // 然后,还可以用dmesg命令,查看一下LOG;或者查看(cat /var/log/messages)
- [root@www ~]# dmesg | tail -5
- possible SYN flooding on port 54104. Sending cookies.
- possible SYN flooding on port 54104. Sending cookies.
- possible SYN flooding on port 54104. Sending cookies.
- possible SYN flooding on port 54104. Sending cookies.
- possible SYN flooding on port 54104. Sending cookies.
- // 发现全是洪水攻击(SYN flooding)啊!!!
另外的几个示例
- // 按本地IP,统计54104端口的连接数,并倒序排列
- # netstat -ant | grep ":54104" | awk '/^tcp/{++S[$4]} END {for(a in S) print a,S[a]}' | sort -nr -k 2 -t ' '
- ::ffff:115.238.54.116:54104 6240
- ::ffff:120.199.8.215:54104 436
- ::ffff:121.52.229.126:54104 275
- 115.238.54.116:54104 59
- 121.52.229.126:54104 4
- :::54104 1
- 120.199.8.215:54104 1
- // 查看54104端口连接数最多的前N个远端IP。$5表示第5列的远端IP;-F:表示按:分割,然后去前面的IP。
- # netstat -ant | grep ":54104" | awk '{print $5}' | awk -F: '{print $(NF-1)}' | sort | uniq -c | sort -nr | head
- 79 203.82.85.33
- 20 202.67.41.51
- 13 180.214.232.10
- 12 202.67.40.50
- 11 85.62.233.162
- 10 85.62.233.161
- 8 171.255.157.21
- 8 112.215.63.47
- 7 223.255.225.80
- 7 120.161.1.127
- //按端口,统计TCP链接数
- # netstat -ant | awk '/^tcp/{print $4}' | awk -F: '{print $(NF)}' | sort | uniq -c | sort -nr | head
- 3199 54104
- 2381 9090
- 125 8000
- 22 5432
- 5 80
- 3 50222
- 2 25
- 2 22
- 1 8080
- 1 8009
- //对最后一行(NF),进行统计Key/Value数组统计;然后,对第二列(k)进行进行数值(n)倒序(r)排列(分割符为空格)
- # netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' | sort -nr -k 2 -t ' '
- TIME_WAIT 6465
- FIN_WAIT2 2178
- ESTABLISHED 1526
- FIN_WAIT1 892
- CLOSING 93
- SYN_RECV 86
- LAST_ACK 58
- CLOSE_WAIT 1
- //对最后一行(NF),进行统计Key/Value数组统计;然后,进行数值(n)倒序(r)排序
- # netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print S[a],a}' | sort -nr
- 5999 TIME_WAIT
- 2041 FIN_WAIT2
- 1439 ESTABLISHED
- 837 FIN_WAIT1
- 105 CLOSING
- 96 SYN_RECV
- 47 LAST_ACK
- 1 CLOSE_WAIT
- //查出哪个IP地址连接最多(IP归属地查询工具nali需要安装)
- # netstat -ant | awk '{print $5}' | awk -F: '{if($NF>1){print $(NF-1)}}' | sort | uniq -c | sort -nr | head | nali
- 30 127.0.0.1[本机地址]
- 15 71.57.157.0[美国 乔治亚州Norcross]
- 13 203.82.85.33[马来西亚]
- 11 218.202.4.149[云南省昆明市 移动]
- 10 211.137.119.10[陕西省 移动]
- 9 183.224.2.94[中国 移动]
- 9 180.214.232.10[印度尼西亚]
- 9 101.254.152.168[中国]
- 8 85.62.233.162[西班牙]
- 8 202.67.40.50[印度尼西亚]
相关博文
用 netstat 命令,分析网络连接情况