#!/bin/bash
######################################################
# 00 0 * * *  root /root/sh/nginx_cut_log.sh >> /root/sh/nginx_cut_log.log 2>&1
########## variable #######################################
nginx_dir=/opt/nginx
nginx_log_dir=/opt/nginx/logs
logs_bakpath=/var/log/nginx
year=$(date -d "yesterday" +"%Y")
month=$(date -d "yesterday" +"%m")
delyear=$(date -d "3 months ago" +"%Y")
delmonth=$(date -d " 4 months ago"  +"%m")
deldays=30
cut_log_path=${logs_bakpath}/${year}/${month}
 
export LANG=C
export LC_ALL=C
export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
 
####### do ##############################################
if [ ! -d "$cut_log_path" ];then
        mkdir -p ${logs_bakpath}/${year}/${month}
fi
 
echo ""
echo ""
echo "`date` start."
echo "##################################"
#### move yesterday logs ####
echo "`date` move yesterday logs."
if [ -d "$nginx_log_dir" ]; then
   cd $nginx_log_dir
   ls | grep ".log" | awk -F '.log' '{print $1}' > /tmp/nginxloglist.txt
else
   echo "log backup directory does not exist, exit"
   exit 1
fi
 
for logfilename in `cat /tmp/nginxloglist.txt`
do
   mv "$logfilename".log "$cut_log_path"/"$logfilename"_$(date -d "yesterday" +"%Y%m%d").log
done
 
#### nginx reopen log ####
kill -USR1 `cat ${nginx_dir}/logs/nginx.pid`
#or
#${nginx_dir}/sbin/nginx -s reopen
 
#### Delete 3 months before the log ####
cd "$logs_bakpath"/"$delyear"
if [ -d "$delmonth" ];then
   rm -rf "$delmonth"
   echo "`date` Delete ${logs_bakpath}/${delyear}/${delmonth}"
else
   echo "`date` Did not delete the directory."
fi
 
if [ -d "$logs_bakpath" ]; then
    cd $logs_bakpath
    echo "`date` Deletes the file list."
    find $logs_bakpath -maxdepth 3 -type f -name "*.log" -mtime +"$deldays"
    find $logs_bakpath -maxdepth 3 -type f -name "*.log" -mtime +"$deldays" | xargs rm -rf
else
    echo "`date` Log directory does not exist, exit."
    exit
fi
