完全原创,自己写的一个脚本,Nginx前20个访问IP的抓取,执行脚本后,会不断的提取日志,直接你输入0后才会停止,否则会一直循环下去,时间可以自己定,脚本如下: #!/bin/bash
# date 2013-04-24
# Liuyang
# nginx log file directory
nginxlogdir="/opt/server/nginx/logs"
nginxlog="$nginxlogdir/data.zgzcw.com.access.log"
#Start collecting log
start_time=$(date +"%F %X")
factorial=1
echo "Start time:$start_time"
tail -f $nginxlog | awk '{ print $1 }' > /root/nginx.log &
while [ "$factorial" -le 10 ]
do
echo "please input the stop number:[0]"
stty -echo
read num
stty echo
if [ $num == 0 ]; then
ps aux | grep "tail -f $nginxlog" | grep -v grep | awk '{ print $2 }' | xargs kill -9
factorial=11
fi
done
stop_time=$(date +"%F %X")
echo " "
echo "Stop time: $stop_time"
echo " "
echo "$start_time ~ $stop_time"
echo " "
#Most visted 20 IP
echo "Most visted 20 IP:"
printf "Frequency IP\n"
cat /root/nginx.log |grep -v - | awk '{ print $1 }' | sort -n|uniq -c|sort -nr \
|head -20 | sed 's/^ *//g' | awk 'BEGIN {FS=" "}{printf("%d\t%s\n",$1,$2)}'
|