已存在nginx日志切割脚本
随记:nginx当开启日志记录时,只要有web资源访问就会有访问记录产生,access.log就会持续增长,所以需要进行日志切割,让nginx重新写入新的日志文件,由于之前未对网站未进行日志切割,导致之在做了日志切割后,第一次的日志量过大,统计较为困难,因此就有了它
#!/bin/bash
#定义日志文件名称
LOG_FILE='hanjy_access.log-2022-05-18.gz'
#后续变量替换引用分隔符
Fs=-
#日志保存路径
OLD_FILE=/www/wwwlogs/backup
#清空并生成临时文件
>./tmp_file.txt
#取出日志中日期并保存到临时文件中
zcat ${OLD_FILE}/${LOG_FILE}|awk -F"[[ :]+" '{date[$4]++} END {for (i in date){print i}}'>./tmp_file.txt
#循环读取临时文件中的日期,使用awk 匹配并写入到指定备份路径
while read line
do
if [ ! -d ${OLD_FILE}/${LOG_FILE%%${Fs}*} ]; then
mkdir -p ${OLD_FILE}/${LOG_FILE%%${Fs}*}
fi
zcat ${OLD_FILE}/${LOG_FILE}|awk -F"[[ :]+" "/${line////\/}/{print}" >${OLD_FILE}/${LOG_FILE%%${Fs}*}/${LOG_FILE%%${Fs}*}-${line//\//-}
done<./tmp_file.txt
#循环结束
#删除临时文件
rm -rf ./tmp_file.txt
本文是原创文章,采用 CC BY-NC-SA 许可协议,完整转载请注明来自 半城小栈
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果