我的服务器CPU使用率不高,我可以看到Apache正在使用太多的内存。
我有一种感觉,我正在用一个IP进行DOS.-也许你可以帮我找到他?
我已经使用以下行找到10个最“活跃”的IP:
cat access.log | awk '{print $1}' |sort |uniq -c |sort -n |tail
前5名IPs对服务器的请求大约是“平均”用户的200倍。但是,我不知道这5个访问者是否经常访问,或者他们正在攻击服务器。
有没有办法,指定上述搜索到一个时间间隔,例如。最后两个小时或是在10-12之间吗?
干杯!
更新2011年10月23日 – 我需要的命令:
在最近十小时内获取条目[这里两个小时]
awk -vDate=`date -d'now-2 hours' +[%d/%b/%Y:%H:%M:%S` ' { if ($4 > Date) print Date FS $4}' access.log
在最近的X小时内获得最活跃的IP [这里两个小时]
awk -vDate=`date -d'now-2 hours' +[%d/%b/%Y:%H:%M:%S` ' { if ($4 > Date) print $1}' access.log | sort |uniq -c |sort -n | tail
获取相对时间范围内的条目
awk -vDate=`date -d'now-4 hours' +[%d/%b/%Y:%H:%M:%S` -vDate2=`date -d'now-2 hours' +[%d/%b/%Y:%H:%M:%S` ' { if ($4 > Date && $4 < Date2) print Date FS Date2 FS $4}' access.log
在绝对时间段内获取条目
awk -vDate=`date -d '13:20' +[%d/%b/%Y:%H:%M:%S` -vDate2=`date -d'13:30' +[%d/%b/%Y:%H:%M:%S` ' { if ($4 > Date && $4 < Date2) print $0}' access.log
在绝对时间段内获取最活跃的IP
awk -vDate=`date -d '13:20' +[%d/%b/%Y:%H:%M:%S` -vDate2=`date -d'13:30' +[%d/%b/%Y:%H:%M:%S` ' { if ($4 > Date && $4 < Date2) print $1}' access.log | sort |uniq -c |sort -n | tail