我的服務器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