shell脚本统计网站pv,每分钟/小时/天~

脚本内容如下:

#!/bin/bash

####获取输入
read -p "请输入日志名称: " log_name
####将日志进行统计,每秒钟的请求数
cat ./$log_name | cut -d ' ' -f4 | uniq -c | sort -n -r -o ./temp_sorted.log
###定义一天的pv,初始值为0 
all_pv=0
###循环24小时,一天
for hour in `seq 0 23`
do
#定义每分钟的pv
min_all_pv=0
#判断是不是0-9,如果是需要手动加0
if (( $hour <= 9 ));then
    #循环每一分钟
    for minute in `seq 0 59`
    do
           ##判断是不是前9分钟,如果是,需要手动加0
       if (( $minute <= 9 ));then
        ###将每分钟的请求数相加
        min_sum_pv=`cat temp_sorted.log |grep ":0$hour:0$minute:"|awk '{sum += $1}END{print sum}'`
        #可以查看每分钟的请求数是多少
           #echo "0$hour:0$minute的请求数是:   $a"
         ##不是前9分钟,不需要加0
       else
        min_sum_pv=`cat temp_sorted.log |grep ":0$hour:$minute:"|awk '{sum += $1}END{print sum}'`
    #    echo "0$hour:$minute的请求数是:   $a"
       fi
       min_all_pv=`expr $min_sum_pv + $min_all_pv`
    done
    #输出空行,可以有效的分隔出每小时的总pv
        #echo -e "\n"
    echo "$hour时的总请求数是: $min_all_pv"
    all_pv=`expr $min_all_pv + $all_pv`
    #echo -e "\n"
else
        for minute in `seq 0 59`
        do
           if (( $minute <= 9 ));then
                min_sum_pv=`cat temp_sorted.log |grep ":$hour:0$minute:"|awk '{sum += $1}END{print sum}'`
          #      echo "$hour:0$minute的请求数是:   $a"
           else 
                min_sum_pv=`cat temp_sorted.log |grep ":$hour:$minute:"|awk '{sum += $1}END{print sum}'`
          #      echo "$hour:$minute的请求数是:   $a"
          fi
           min_all_pv=`expr $min_sum_pv + $min_all_pv`
        done
        #echo -e "\n"
        echo "$hour时的总请求数是: $min_all_pv"
    all_pv=`expr $min_all_pv + $all_pv`
        #echo -e "\n"
fi
done
echo "总pv是: $all_pv"
 

运行结果如下:

日志内容就是nginx 的日志内容

猜你喜欢

转载自blog.csdn.net/wojiuwangla/article/details/98874891