编辑
2025-10-16
问题解决文档
00
请注意,本文编写于 90 天前,最后修改于 90 天前,其中某些信息可能已经过时。

目录

一、前言
二、指令
1、常用指令
2、根据nginx的访问日志判断
三、总结

一、前言

服务器有的时候会被人搞崩,cpu莫名飙升,为了查看哪些IP访问过于频繁,就可以使用netstat、awk等指令进行统计查看。

二、指令

对一些常用的指令总结如下:

1、常用指令

- 对连接的IP按连接数量进行排序: netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n - 查看TCP连接状态: 快速统计并排序TCP连接状态 netstat -nat |awk '{print $6}'|sort|uniq -c|sort -rn 简洁显示TCP状态分布 netstat -n | awk '/^tcp/ {++S[$NF]};END {for(a in S) print a, S[a]}' 清晰格式化的状态统计报告 netstat -n | awk '/^tcp/ {++state[$NF]}; END {for(key in state) print key,"\t",state[key]}' netstat -n | awk '/^tcp/ {++arr[$NF]};END {for(k in arr) print k,"\t",arr[k]}' 管道流式处理的状态统计 netstat -n |awk '/^tcp/ {print $NF}'|sort|uniq -c|sort -rn 过滤纯净的TCP状态统计 netstat -ant | awk '{print $NF}' | grep -v '[a-z]' | sort | uniq -c - 查看80端口连接数最多的20个IP: netstat -anlp|grep 80|grep tcp|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -n20 - 查找较多time_wait连接: netstat -n|grep TIME_WAIT|awk '{print $5}'|sort|uniq -c|sort -rn|head -n20 - 查找较多的SYN连接: netstat -an | grep SYN | awk '{print $5}' | awk -F: '{print $1}' | sort | uniq -c | sort -nr | more - 查看当前并发访问数: netstat -an | grep ESTABLISHED | wc -l - 查看所有连接请求: netstat -tn 2>/dev/null - 但是只要established的,则grep "ESTABLISHED": netstat -tn | grep ESTABLISHED 2>/dev/null - 查看访问某一ip的所有外部连接IP(数量从多到少): netstat -nt | grep 121.41.30.149:80 | awk '{print $5}' | awk -F: '{print ($1>$4?$1:$4)}' | sort | uniq -c | sort -nr | head - 根据端口查找进程: netstat -ntlp | grep 80 | awk '{print $7}' | cut -d/ -f1

2、根据nginx的访问日志判断

在网站部署的目录下,会有个wwwlogs文件夹用于存放一些日志文件。我们可以根据其中的access.log文件查看一些访问记录。

- 查看访问记录,从1000行开始到3000: cat access.log |head -n 3000|tail -n 1000 - 查看访问记录,从1000行开始,显示200行: cat access.log |tail -n +1000 |head -n 200 - 根据访问IP统计UV: awk '{print $1}' access.log|sort | uniq -c |wc -l - 统计访问URL统计PV: awk '{print $7}' access.log|wc -l - 查询访问最频繁的URL: awk '{print $7}' access.log|sort | uniq -c |sort -n -k 1 -r|more - 查询访问最频繁的IP: awk '{print $1}' access.log|sort | uniq -c |sort -n -k 1 -r|more - 通过日志查看含有send的url,统计ip地址的总连接数: cat access.log | grep "send" | awk '{print $1}' | sort | uniq -c | sort -nr - 通过日志查看当天指定ip访问次数过的url和访问次数: cat access.log | grep "222.132.90.94" | awk '{print $7}' | sort | uniq -c | sort -nr

三、总结

保佑服务器少出事。

本文作者:小白

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!