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 "\033[32m[$log is less than 100M!]\033[0m"
fi
done
echo -e "\033[42mNginx-dir-logfile had been rolled successful!......\033[0m"
原文:https://www.cnblogs.com/immense/p/11402869.html