分类 运维快感 下的文章

实现步骤:
1、使用循环加上过滤获取到所有的日志文件
2、使用awk对字符串进行处理(比如:切割)
2-1、使用shell判断文件夹是否存在,如果不存在就创建
2-2、文件存在就先删除文件再写入新文件
3、nginx信号处理
4、定时任务建立(每天00:00)进行处理(/usr/local/bin/backup_log是shell文件的全路径)

0 0 * * * /usr/local/bin/backup_log.sh

备注:
1、日志放在/var/www/logs下面
2、日志命名为:[域名]-access.log 和 [域名]-error.log

/usr/local/bin/backup_log.sh代码如下

#!/bin/bash
# use this to backup log
# /usr/local/bin/backup_log.sh
# author: wkj

NGINX_PATH=/etc/nginx/
LOG_PATH=/var/www/logs/
NGINX_PID=/run/nginx.pid
YESTERDAY=`date +%F -d -1day`
cd $LOG_PATH
for logName in `ls ./ | grep .log`
    do
        logPath=`echo $logName|awk -F'-' '{print $1}'`
        fileType=`echo $logName|awk -F'-' '{print $2}'`
        logPathR=${LOG_PATH}${logPath}
        if [ ! -d $logPathR ];then
            mkdir $logPathR
        fi
        fileName=${logPathR}/${YESTERDAY}-${fileType}
        if [ -f $fileName ];then
            rm -f $fileName
        fi
        mv $logName $fileName
    done

kill -USR1 `cat ${NGINX_PID}`