nginx日志切割/分割,按天生成&定期删除日志

431 阅读1分钟

#!/bin/bash

LOG_PATH=/usr/local/nginx/logs YESTERDAY=date -d yesterday +%Y-%m-%d PID_PATH=/usr/local/nginx/logs/nginx.pid mv LOGPATH/access.logLOG_PATH/access.log LOG_PATH/access-YESTERDAY.log[!fYESTERDAY.log [ ! -f PID_PATH ] || kill -USR1 cat $PID_PATH find LOG_PATH/* -name "*.log" -type f -mtime +7 -exec rm -rf {} \; 添加定时任务 00 00 * * * /bin/sh /usr/local/nginx/logs/log.sh 1、做一个日志分割脚本文件: vi /data/svr/nginx/sbin/nginx_cutlog.sh #!/bin/bash #nginx日志分割脚本: #crontab,需要root下设置: 0 0 * * * /data/svr/nginx/sbin/nginx_cutlog.sh #设置日志文件存放目录 LOG_HOME="/data/svr/nginx/logs/" #备分文件名称 LOG_PATH_BAK="(date -d yesterday +%Y%m%d)" #重命名日志文件 mv LOGHOME/access.logLOGHOME/access.LOGHOME/access.LOGHOME/access.LOGPATHBAK.logmv{LOG_HOME}/access.log L O G H O M E / a c c e s s . {LOG_HOME}/access.LOG H ​ OME/access.{LOG_PATH_BAK}.log mv {LOG_HOME}/error.log L O G H O M E / e r r o r . {LOG_HOME}/error.LOG H ​ OME/error.{LOG_PATH_BAK}.log #向nginx主进程发信号重新打开日志 kill -USR1 cat ${LOG_HOME}/nginx.pid

#删除90天前的日志 #find /data/svr/nginx/logs/ -atime +90 -exec rm -f {} ;

2、在root下新建个crontab定时任务: crontab -e #nginx日志分割 0 0 * * * /data/svr/nginx/sbin/nginx_cutlog.sh #!/bin/bash DATA=(dated"1day""+LOGPATH="/usr/local/nginx/logs"PIDPATH="/usr/local/nginx/logs/nginx.pid"if[f(date -d "-1 day" "+%Y%m%d") LOG_PATH="/usr/local/nginx/logs" PID_PATH="/usr/local/nginx/logs/nginx.pid" if [ -f PID_PATH ]; then mv LOGPATH/access.logLOG_PATH/access.log LOG_PATH/access.DATA.logmvDATA.log mv LOG_PATH/error.log LOGPATH/error.LOG_PATH/error.DATA.log kill -USR1 (cat(cat PID_PATH) find $LOG_PATH/* -name "*.log" -type f -mtime +15 | xargs rm -f else echo "Error,Nginx is not working!" >> /var/log/messages fi