Linux的netstat命令使用(一)
如何查看占用某个端口的程序的pid?
netstat -tunlp netstat -tunlp | grep 80 netstat -anp # -t 显示tcp相关选项 # -u 显示udp相关选项 # -n 能显示数字的全部显示数字,ip地址 # -p 显示建立链接的程序名


TCP连接状态详解
- LISTEN:侦听来自远方的TCP端口的连接请求
- SYN-SENT:再发送连接请求后等待匹配的连接请求
- SYN-RECEIVED:再收到和发送一个连接请求后等待对方对连接请求的确认
- ESTABLISHED:代表一个打开的连接
- FIN-WAIT-1:等待远程TCP连接中断请求,或先前的连接中断请求的确认
- FIN-WAIT-2:从远程TCP等待连接中断请求
- CLOSE-WAIT:等待从本地用户发来的连接中断请求
- CLOSING:等待远程TCP对连接中断的确认
- LAST-ACK:等待原来的发向远程TCP的连接中断请求的确认
- TIME-WAIT:等待足够的时间以确保远程TCP接收到连接中断请求的确认
- CLOSED:没有任何连接状态
- SYN_RECV表示正在等待处理的请求数;
- ESTABLISHED表示正常数据传输状态;
- TIME_WAIT表示处理完毕,等待超时结束的请求数。
扩展
# 找出程序运行的端口
netstat -ap | grep ssh
# 并不是所有的进程都能找到,没有权限的会不显示,使用 root 权限查看所有的信息。
# 找出运行在指定端口的进程
netstat -an | grep ':80'
# 统计80端口连接数 :
netstat -nat | grep -i "80" | wc -l
# 统计已连接上的,状态为“established
netstat -anp | grep ESTABLISHED | wc -l
常用1
# 查出哪个IP地址连接最多
netstat -anp | grep ESTABLISHED | awk {print $5}|awk -F: {print $1} | sort | uniq -c | sort -r +0n
# 对连接的IP按连接数量进行排序
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
# 查看80端口连接数最多的20个IP
netstat -anlp|grep 80|grep tcp|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -n20
# 哪些IP连接到服务器连接多
netstat -an|awk -F: '{print $2}'|sort|uniq -c|sort -nr|head
# 列出所有连接到本机80端口的IP地址和其连接数
netstat -plan|grep :80|awk '{print $5}'|cut -d: -f 1|sort|uniq -c|sort -nk 1
# 显示连接80 端口前10的ip,并显示每个IP的连接数
netstat -antp | awk '$4 ~ /:80$/ {print $4" "$5}' | awk '{print $2}'|awk -F : {'print $1'} | uniq -c | sort -nr | head -n 10
# web服务器并发连接数
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(key in S) print key,"\t",S[key]}'
常用2
查询访问最频繁的IP
netstat -n | awk '{print $1}' access-2020-04-06.log | sort | uniq -c | sort -n -k 1 -r | more
# 如根据访问IP统计UV
netstat -n | awk '{print $1}' access-2020-04-06.log | sort | uniq -c | wc -l
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。