此脚本为nginx日志的处理,如为tomcat或log4j 则修改日志日期格式与日志文件后缀名 #!/bin/sh#########nginx日志处理##############chmod u+x /
此脚本为nginx日志的处理,如为tomcat或log4j 则修改日志日期格式与日志文件后缀名
#!/bin/sh#########nginx日志处理##############chmod u+x /software/nginx/nginx/nginxLogHandle.sh#sh /software/nginx/nginx/nginxLogHandle.sh#crontab -e 加入定时任务#每天凌晨1点开始执行,丢弃执行输出# 0 1 * * * sh /software/nginx/nginx/nginxLogHandle.sh > /dev/null 2>&1#cat /software/nginx/nginx/logsBak/0_HandleLog.txt#定义变量开始#压缩备份前一天到前多少天的日志zipLogDayNum=20#删除多少天前的日志delLogDayNum=30#日志目录nginxLogPath="/software/nginx/nginx/logs"#日志备份目录nginxLogBackPath="/software/nginx/nginx/logsBak"#脚本执行日志记录路径nginxLogFindFilePath="/software/nginx/nginx/logsBak"nginxLogZipFileName="$nginxLogFindFilePath/0_findZipHandle.txt"nginxLogDelFileName="$nginxLogFindFilePath/0_findDelHandle.txt"#脚本执行日志记录nginxLogHandleFileName="$nginxLogFindFilePath/0_HandleLog.txt"#定义变量结束echo "#################################################" >> $nginxLogHandleFileNameecho "############## nginx日志处理 ###################" >> $nginxLogHandleFileNameecho "######################" $(date +"%Y-%m-%d %H:%M:%S:%N") "###########################" >> $nginxLogHandleFileNameecho "#################################################" >> $nginxLogHandleFileNameecho "####zipLogDayNum###" $zipLogDayNum >> $nginxLogHandleFileNameecho "####delLogDayNum###" $delLogDayNum >> $nginxLogHandleFileNameecho "####nginxLogPath###" $nginxLogPath >> $nginxLogHandleFileNameecho "####nginxLogBackPath###" $nginxLogBackPath >> $nginxLogHandleFileNameecho "####nginxLogZipFileName###" $nginxLogZipFileName >> $nginxLogHandleFileNameecho "####nginxLogDelFileName###" $nginxLogDelFileName >> $nginxLogHandleFileName#检查备份目录是否存在if [ ! -x "$nginxLogBackPath" ]then { mkdir $nginxLogBackPath} fi #检查文件记录目录是否存在if [ ! -x "$nginxLogFindFilePath" ]then { mkdir $nginxLogFindFilePath} fi #清空查找记录文件if [ -f "$nginxLogZipFileName" ]then { rm -rf $nginxLogZipFileName}fiif [ -f "$nginxLogDelFileName" ]then { rm -rf $nginxLogDelFileName}fi#查找符合条件的文件放入txtfor ((num=1; num<$zipLogDayNum; ++num))do logDateStr=$(date -d-$num' day' +"%Y%m%d") find $nginxLogPath -name "*.log-$logDateStr" >> $nginxLogZipFileNamedone #循环查找到文件cat $nginxLogZipFileName | while read findRowdo echo $(date +"%Y-%m-%d %H:%M:%S:%N") "####压缩文件并删除###" $findRow >> $nginxLogHandleFileName findFileName=$(basename $findRow) #echo "$findFileName.tar.gz" tar -zcf $nginxLogBackPath/$findFileName.tar.gz $findRow rm -rf $findRowdone##删除文件for ((num=$delLogDayNum; num<$delLogDayNum+10; ++num))do logDateStr=$(date -d-$num' day' +"%Y%m%d") find $nginxLogBackPath -name "*.log-$logDateStr.tar.gz" >> $nginxLogDelFileNamedone cat $nginxLogDelFileName | while read findRowdo echo $(date +"%Y-%m-%d %H:%M:%S:%N") "####删除备份###" $findRow >> $nginxLogHandleFileName rm -rf $findRowdoneecho "#################################################" >> $nginxLogHandleFileNameecho "######################" $(date +"%Y-%m-%d %H:%M:%S:%N") "###########################" >> $nginxLogHandleFileNameecho "#################################################" >> $nginxLogHandleFileNameecho "" >> $nginxLogHandleFileNameecho "" >> $nginxLogHandleFileNameecho "" >> $nginxLogHandleFileName