2021-09-15

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值