shell脚本分割nginx日志
简介
nginx
没有自动分割日志的功能,我们可以利用shell
脚本+cron
定时任务进行分割。
脚本
vim /data/scripts/split_nginx_logs.sh
#!/bin/bash
#设置日志文件存放目录
logs_dir="/usr/local/nginx/logs"
store_dir="/data/backup/nginx/logs"
# 设置nginx reload命令,reload才会释放文件句柄,不然就会一直写到mv之后的日志文件
nginx_reopen="/usr/local/nginx/sbin/nginx -s reopen "
# 设置日期格式
date_format=$(date -d "-1 hours" +%Y_%m_%d_%H)
year_format=$(echo $date_format | awk -F '_' '{print $1}')
month_format=$(echo $date_format | awk -F '_' '{print $2}')
day_format=$(echo $date_format | awk -F '_' '{print $3}')
hour_format=$(echo $date_format | awk -F '_' '{print $4}')
dist_dir=${store_dir}/${year_format}/${month_format}/${day_format}
mkdir -p ${dist_dir}
for i in $(ls ${logs_dir}/*.log); do
dist_file=${dist_dir}/$(basename ${i})_${date_format}
count=0
while :; do
if [ ! -f "${dist_file}" ]; then
break
fi
dist_file=${dist_dir}/$(basename ${i})_${date_format}.${count}
let count=count+1
done
mv $i ${dist_file}
done
eval $nginx_reopen
chmod +x /data/scripts/split_nginx_logs.sh
设置定时任务
crontab -e
添加任务
0 * * * * /bin/bash /data/scripts/split_nginx_logs.sh >> /tmp/split_nginx_log.log 2>&1
- 原文作者:Linux运维菜
- 原文链接:https://www.opcai.top/post/2021/2021-06/nginx_split_logs/
- 版权声明:本作品采用进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。