清理日志脚本 shell

零代码基础,写了两天终于写成了。成就感满满的。

需求:删除logs目录下的7天之前的*.log日志。*.out不能删。;7天内的*.log和*.out大文件删除部分,保留最新的5000行。

#!bin/bash

function red()

{

echo -e "\033[0;31m$1\033[0m"

}

function green()

{

echo -e "\033[0;32m$1\033[0m"

}

function blue()

{

echo -e "\033[0;34m$1\033[0m"

}

dirs=(/home/testspace/*/logs /home/testspace/*/*/logs /home/testspace/*/*/*/logs)

echo  ""

green "文件夹总个数:${#dirs[*]}"

echo  ""

for dir in ${dirs[*]}

do

    if [ "$(ls -A $dir)" ] ;then

      clog=$(ls -IR $dir|grep log |wc -l) 

      if [ "$clog" -gt "0" ];then

          find $dir/*.log -mtime +7|xargs -r rm -rf

      else

          blue "$dir 没有.log文件"

      fi

      for log in $dir/*

      do

          if [ -f $log ];then

              declare -i num

              declare -i dnum

              num=$(cat $log| wc -l)

              dnum=$[ $num - 5000 ]

              if [ "$dnum" -gt "0" ];then

                red "$log 行数:$num ,需要删除一部分!"

                #sed -n "1,$temp p" $log

                sed -i "1,$dnum d" $log

              else

                green "$log 文件还小继续使用!"

              fi

          fi

        done

    fi

done

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容