统计web服务器每天客户访问量及每个时段的访问量
前提:在这之前我每天到公司习惯性的统计一下昨天的总访问量及每个时段的访问量,今天突然想起能不能脚本的方式实现我想要的功能呢,经过一上午的试验,终于测试成功,写了3种不同的方法,最后一种方法最简单
第一种方法(这种方法不灵活,太机械了)
read -p "请输入要查询的日志文件:" logFile
if [ -e $logFile ];then
all=`cat $logFile | cut -d' ' -f1 | sort -n | uniq -c | sort -n | wc -l`
echo "今天访问问的总人数为:$all"
on0=`cat $logFile | grep "16/Jan/2016:00" | cut -d' ' -f1 | sort -n | uniq -c | sort -n | wc -l`
echo "今天0点访问的人数有:$on0"
on1=`cat $logFile | grep "16/Jan/2016:01" | cut -d' ' -f1 | sort -n | uniq -c | sort -n | wc -l`
echo "今天1点访问的人数有:$on1"
on2=`cat $logFile | grep "16/Jan/2016:02" | cut -d' ' -f1 | sort -n | uniq -c | sort -n | wc -l`
echo "今天2点访问的人数有:$on2"
on3=`cat $logFile | grep "16/Jan/2016:03" | cut -d' ' -f1 | sort -n | uniq -c | sort -n | wc -l`
echo "今天3点访问的人数有:$on3"
on4=`cat $logFile | grep "16/Jan/2016:04" | cut -d' ' -f1 | sort -n | uniq -c | sort -n | wc -l`
echo "今天4点访问的人数有:$on4"
on5=`cat $logFile | grep "16/Jan/2016:05" | cut -d' ' -f1 | sort -n | uniq -c | sort -n | wc -l`
echo "今天5点访问的人数有:$on5"
on6=`cat $logFile | grep "16/Jan/2016:06" | cut -d' ' -f1 | sort -n | uniq -c | sort -n | wc -l`
echo "今天6点访问的人数有:$on6"
on7=`cat $logFile | grep "16/Jan/2016:07" | cut -d' ' -f1 | sort -n | uniq -c | sort -n | wc -l`
echo "今天7点访问的人数有:$on7"
on8=`cat $logFile | grep "16/Jan/2016:08" | cut -d' ' -f1 | sort -n | uniq -c | sort -n | wc -l`
echo "今天8点访问的人数有:$on8"
on9=`cat $logFile | grep "16/Jan/2016:09" | cut -d' ' -f1 | sort -n | uniq -c | sort -n | wc -l`
echo "今天9点访问的人数有:$on9"
on10=`cat $logFile | grep "16/Jan/2016:10" | cut -d' ' -f1 | sort -n | uniq -c | sort -n | wc -l`
echo "今天10点访问的人数有:$on10"
on11=`cat $logFile | grep "16/Jan/2016:11" | cut -d' ' -f1 | sort -n | uniq -c | sort -n | wc -l`
echo "今天11点访问的人数有:$on11"
on12=`cat $logFile | grep "16/Jan/2016:12" | cut -d' ' -f1 | sort -n | uniq -c | sort -n | wc -l`
echo "今天12点访问的人数有:$on12"
on13=`cat $logFile | grep "16/Jan/2016:13" | cut -d' ' -f1 | sort -n | uniq -c | sort -n | wc -l`
echo "今天13点访问的人数有:$on13"
on14=`cat $logFile | grep "16/Jan/2016:14" | cut -d' ' -f1 | sort -n | uniq -c | sort -n | wc -l`
echo "今天14点访问的人数有:$on14"
on15=`cat $logFile | grep "16/Jan/2016:15" | cut -d' ' -f1 | sort -n | uniq -c | sort -n | wc -l`
echo "今天15点访问的人数有:$on15"
on16=`cat $logFile | grep "16/Jan/2016:16" | cut -d' ' -f1 | sort -n | uniq -c | sort -n | wc -l`
echo "今天16点访问的人数有:$on16"
on17=`cat $logFile | grep "16/Jan/2016:17" | cut -d' ' -f1 | sort -n | uniq -c | sort -n | wc -l`
echo "今天17点访问的人数有:$on17"
on18=`cat $logFile | grep "16/Jan/2016:18" | cut -d' ' -f1 | sort -n | uniq -c | sort -n | wc -l`
echo "今天18点访问的人数有:$on18"
on19=`cat $logFile | grep "16/Jan/2016:19" | cut -d' ' -f1 | sort -n | uniq -c | sort -n | wc -l`
echo "今天19点访问的人数有:$on19"
on20=`cat $logFile | grep "16/Jan/2016:20" | cut -d' ' -f1 | sort -n | uniq -c | sort -n | wc -l`
echo "今天20点访问的人数有:$on20"
on21=`cat $logFile | grep "16/Jan/2016:21" | cut -d' ' -f1 | sort -n | uniq -c | sort -n | wc -l`
echo "今天21点访问的人数有:$on21"
on22=`cat $logFile | grep "16/Jan/2016:22" | cut -d' ' -f1 | sort -n | uniq -c | sort -n | wc -l`
echo "今天22点访问的人数有:$on22"
on23=`cat $logFile | grep "16/Jan/2016:23" | cut -d' ' -f1 | sort -n | uniq -c | sort -n | wc -l`
echo "今天23点访问的人数有:$on23"
fi
第二种方法(通过for循环的方式)
#!/bin/bash
read -p "请输入要查询的日志文件:" logFile
if [ -e $logFile ];then
all=`cat $logFile | cut -d' ' -f1 | sort -n | uniq -c | sort -n | wc -l`
echo "今天访问的总人数为:$all人"
for i in $(seq 0 23);do
if [ $i -le 9 ];then
on0=`cat $logFile | grep "16/Jan/2016:0$i" | cut -d' ' -f1 | sort -n | uniq -c | sort -n | wc -l`
echo "今天$i点访问的人数有:$on0人"
else
on0=`cat $logFile | grep "16/Jan/2016:$i" | cut -d' ' -f1 | sort -n | uniq -c | sort -n | wc -l`
echo "今天$i点访问的人数有:$on0人"
fi
done
else
echo "你输入的文件不存在,请重新输入!"
fi
第三种方法(通过写方法的方式来实现,用的时候直接调用)
#!/bin/bash
function fileName() {
all=`cat $logFile | cut -d' ' -f1 | sort -n | uniq -c | sort -n | wc -l`
echo "今天访问的总人数为:$all人"
for i in $(seq 0 23);do
if [ $i -le 9 ];then
on0=`cat $logFile | grep "16/Jan/2016:0$i" | cut -d' ' -f1 | sort -n | uniq -c | sort -n | wc -l`
echo "今天$i点访问的人数有:$on0人"
else
on0=`cat $logFile | grep "16/Jan/2016:$i" | cut -d' ' -f1 | sort -n | uniq -c | sort -n | wc -l`
echo "今天$i点访问的人数有:$on0人"
fi
done
}
read -p "请输入要查询的日志文件:" logFile
if [ -e $logFile ];then
fileName
else
echo "你输入的文件不存在,请重新输入!"
fi
转自https://blog.csdn.net/Richardlygo/article/details/83095965