nginx日志切割脚本shell

nginx-log-rotate.sh

#!/bin/bash
#---------------------------------------------
# Comment:Used for rotating nginx log file.
# Author: alin
# Date: 09/27/2018
# Version: 1.0
#---------------------------------------------

LOG_FILE="*.log"
LOG_DIR=/data/log/nginx
LOG_SIZE=100
CURR_TIME=$(date +%Y%m%d%H%M)

for log in `ls $LOG_DIR/$LOG_FILE`
do
total_size=`stat -c %s $log`
size=$(($total_size/1024/1024))
if [ $size -gt $LOG_SIZE ]; then
############# copy
back_file_name="$log-$CURR_TIME"
cd $LOG_DIR
/usr/bin/cp $log $back_file_name
echo "" > $log
############# zip
if [[ $log =~ "8bet" ]]
then
log_file_dir=`ls $log | awk -F"/" '{print $5}' | awk -F"." '{print $1"."$2}'`
else
log_file_dir=`ls $log | awk -F"/" '{print $5}' | awk -F"." '{print $1}'`
fi
cd $log_file_dir
rename=`ls $back_file_name| awk -F"/" '{print $5}'`
zip -9q $rename".zip" $back_file_name
############# rm
find ./ -mtime +10 -name "*.zip" -exec rm -f {} ;
cd $LOG_DIR
rm -f $back_file_name
else
echo -e "33[32m[$log is less than 100M!]33[0m"
fi
done

echo -e "33[42mNginx-dir-logfile had been rolled successful!......33[0m"

nginx-rotate.sh

#!/bin/bash

# nginx log partition per size

LOG_FILE=game-admin.log
LOG_SIZE=100
LOG_DIR=/log/nginx
EXPIRE_DAY=7
CURR_TIME=$(date +%Y%m%d%H%M)

total_size=`stat -c %s $LOG_DIR/$LOG_FILE`
size=$(($total_size/1024/1024))

if [ $size -lt $LOG_SIZE ]; then
exit 0
fi

# copy log file
cd $LOG_DIR
back_file_name="$LOG_FILE-$CURR_TIME"
cp $LOG_FILE $back_file_name
echo "" > $LOG_DIR/$LOG_FILE

# zip
zip -9q "${back_file_name}.zip" ${back_file_name}
rm -f ${back_file_name}

echo "Nginx log rolling success! file: ${back_file_name}.zip"

原文地址:https://www.cnblogs.com/immense/p/11402869.html