该脚本用户计算某个工具格式的访问日志,给定时间间隔内的带宽情况
#!/bin/bash
#-*- coding:utf-8 -*-
#该脚本用户计算某个工具格式的访问日志,给定时间间隔内的带宽情况
>result
log_file="log.file" #定义一个临时日志文件
date="$1" #开始时间作为运行脚本的第一个参数
starttime=$(date -d "$date" +%s) #将输入的时间转换为时间戳
duration="$2" #时间间隔的描述作为运行脚本的第二个参数
let endtime=${starttime}+${duration}
DATE=$(echo $date |awk '{print $1}')
zcat /data/.../access/*${DATE}* |awk -v "s_time=${starttime}" -v "e_time=${endtime}" '{if ($1 >= s_time && $1 <= e_time) print}' > ${log_file} #将日志文件全部解压放在临时文件中,这块有个银行问题,需要解压的文件过大会造成占用设备内存过多
function run(){
duration=$1
while [[ $starttime < $endtime ]];do
let end_time=${starttime}+${duration}
real_date=$(date -d @${starttime} +"%Y%m%d%H%M")
cat ${log_file} |awk -v "s_time=${starttime}" -v "e_time=${end_time}" '{ if ($1 >= s_time && $1 < e_time) print }' |awk -v time="${real_date}" '{num[$4]++}END{for(i in num) print time,num[i],i}' |sort -k2 -nr >> result
starttime=${end_time};
done < ${log_file}
}
run duration