Nginx - 日志分割并定时删除
in Nginx with 0 comment

Nginx - 日志分割并定时删除

in Nginx with 0 comment

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

结尾

酒入豪肠,七分化作月光;剩下的三分,啸成了剑气,绣口一吐,就是半个盛唐。

Responses