清理日志脚本 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

    原文作者:水泥儿
    原文地址: https://www.jianshu.com/p/3a4b79ba3f69
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞