#!/bin/bash ############################################################## # File Name: /sources/logcut.sh # Version: V1.0 # Author: sanshi # Organization: https://www.9133w.cn # Created Time : 2019-03-13 17:12:14 # Description: ############################################################## # begin parallel excutes mkfifo ./$$.fifo && exec 913<> ./$$.fifo && rm -f ./$$.fifo for i in {1..5} do echo >& 913 done # date day dateNow=`date +%Y%m%d` # date 30 days ago dateOld=`date -d '7 days ago' +%Y%m%d` #date precise dateExact=`date +%Y%m%d%H%M%S` # project path logDir="/data/logs" [ ! -d $logDir ] && \ mkdir -p $logDir && \ echo "there no logs to backup!" && exit 3 # baklog save path logBakPath="/data/bak_logs" [ -d $logBakPath ] || mkdir -p $logBakPath #backup and split logs now cd $logDir for pro in $(ls *.log) do read -u 913 { proName=${pro%.*} if [ -s $pro ] then [ -d $logBakPath/$proName ] || mkdir -p $logBakPath/$proName [ -f $logBakPath/$proName/${proName}-${dateNow}.txt ] && \ cp $pro $logBakPath/$proName/${proName}-${dateExact}.txt [ -f $logBakPath/$proName/${proName}-${dateNow}.txt ] || \ cp $pro $logBakPath/$proName/${proName}-${dateNow}.txt sleep 1 [ -f $logBakPath/$proName/${proName}-${dateOld}.txt ] && rm -f $logBakPath/$proName/${proName}-${dateOld}.txt echo > $pro fi echo >& 913 }& done wait exec 913>&- exec 913<&- exit 0