#!/bin/bash
LOG_PATH=/usr/local/nginx/logs
YESTERDAY=`date -d yesterday +%Y-%m-%d`
PID_PATH=/usr/local/nginx/logs/nginx.pid
mv $LOG_PATH/access.log $LOG_PATH/access-$YESTERDAY.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 ${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=$(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 $LOG_PATH/access.log $LOG_PATH/access.$DATA.log
mv $LOG_PATH/error.log $LOG_PATH/error.$DATA.log
kill -USR1 $(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