Nginx - 日志分割并定时删除
说明
写了一个日志分割的脚本,源自一次客户服务器上access_log太大使得内存不足服务器宕机了。
流程说明
1. 根据当前日期重命名日志
2. 利用nginx中的 -USR1信号重新生成日志,形成日志分割
3. 删除以前日志,根据需求保留日志
4. 加入crontab计划每日执行就行
代码
#--------------------------------------------
# author:ZhangSan
# site:https://blog.zxliu.cn/
# slogan:Everything that is worth doing is worth doing slowly-for a long time
#--------------------------------------------
## Divide the log daily and keep it for 7 days
#!/bin/bash
#设置日志文件存放目录
logs_path="/home/data/log/nginx/dakang/"
successLog=dk_success #access_log
errorLog=dk_error #error_log
successfileName=${successLog}_`date +%Y%m%d`
errorfileName=${errorLog}_`date +%Y%m%d`
#设置pid文件
pid_path="/run/nginx.pid"
#重命名日志文件
mv ${logs_path}${successLog}.log ${logs_path}${successfileName}.log
mv ${logs_path}${errorLog}.log ${logs_path}${errorfileName}.log
#向nginx主进程发信号重新打开日志
kill -USR1 `cat ${pid_path}`
# 删除7天前备份的数据,只保留一星期内的数据
find ${logs_path} -mtime +6 -name "${successLog}*.log" -exec rm -rf {} \;
find ${logs_path} -mtime +6 -name "${errorLog}*.log" -exec rm -rf {} \;
crontab 每日3点执行
00 03 * * * /bin/bash /root/backup/sh/cleardklog.sh
结尾
酒入豪肠,七分化作月光;剩下的三分,啸成了剑气,绣口一吐,就是半个盛唐。