nginx日志切割压缩保存

Nginx每天会产生大量的访问日志,而且有些要求保留几个月的日志以便分析,如果不加入自动切割压缩,存储空间很快会被撑爆

下面用shell脚本配合计划任务crontab对nginx日志进行自动切割压缩

vim cut_nginx_log.sh

#!/bin/bash
year=`date +%Y`
month=`date +%m`
day=`date +%d`
rq=`date +%Y%m%d`

pid_path="/software/nginx/logs/nginx.pid"
logs_backup_path="/software/nginx/logs/$year$month"
logs_path="/software/nginx/logs/"
logs_access="1.access.log 2.access.log 3.access.log 4.access.log 5.access.log" #nginx代理多个项目,每个项目日志保存到不同日志文件,所以分开写

[ -d $logs_backup_path ]||mkdir -p $logs_backup_path   #按月命名创建文件夹

for i in ${logs_access}   #for循环去处理上面每个项目的日志文件
do
	mv ${logs_path}${i} ${logs_backup_path}/${i}.${rq}   #把日志移到相应月份文件夹去处理
	kill -USR1 $(cat /software/nginx/logs/nginx.pid)    #根据ng进程号,发个USR1信号重新加载配置创建日志文件,平滑实现不停ng
	tar -zcvf ${logs_backup_path}/${i}.${rq}.tar.gz ${logs_backup_path}/${i}.${rq} #压缩日志节省存储空间
	rm -rf ${logs_backup_path}/${i}.${rq}   #删除处理完的日志
done

echo "Done"

把上面脚本赋予执行权限然后加入计划任务,每天凌晨运行处理

chmod +x cut_nginx_log.sh

crontab -e  =>  00 00 * * * /bin/bash /software/nginx/logs/cut_nginx_log.sh

crontab -l  =>  查看计划任务

你可能感兴趣的:(Shell)