Skip to content

Nginx 日志切割

Nginx日志切割脚本

shell
#!/bin/bash
#nginx access log segmentation script

#log directory
LOG_DIR="nginx log path"

TODAY=$(date +%Y%m%d --date="-1 day")

#log save days
LOG_SAVE_DAYS=15

cd $LOG_DIR

LOG_FILES=$(ls $LOG_DIR/*.log)


for file in $LOG_FILES
do
    size=$(du -k ${file} | awk '{print $1}')

    filename=$(basename ${file} .log)
    #文件大于1M才会切割
    if [ ${size} -gt 1000 ]
    then
        if [ ! -d ${LOG_DIR}/${filename} ]
        then
            mkdir ${filename}
        fi
        mv ${LOG_DIR}/${filename}.log ${LOG_DIR}/${filename}/${filename}-${TODAY}.log
    fi
done

#delete old data
find ${LOG_DIR}/ -mtime +${LOG_SAVE_DAYS} -exec rm -rf {} \;

/etc/init.d/nginx reload

这个脚本配合crontab来执行就可以了,每天00:00执行