zoukankan      html  css  js  c++  java
  • 定时清理日志的shell脚本

    因为公司springcloud项目各个server的日志堆积日益增多占据服务器内存,故提出了定时清理7天之外的日志需求。

    场景:

    日志目录结构:/logs/server_name/date/date_1.log

    shell代码:

     1 #!/bin/bash
     2 echo "hello world"
     3 
     4 dir="/logs"
     5 
     6 dt=`date +%Y%m%d -d "7 day ago"`
     7 
     8 
     9 # 删除子目录下的过期log日志
    10 removeLogs() {
    11     for filename in `ls $1`;
    12     do
    13         array=(${filename//-/ })
    14 
    15         year=${array[1]}
    16         month=${array[2]}
    17         days=${array[3]}
    18         day_array=(${days//./ })
    19         day=${day_array[0]}
    20 
    21         subdir_day=$year$month$day
    22 
    23         if [ "${subdir_day}" < "${dt}" ]
    24             then 
    25             echo "the log $filename has been cleaned."
    26             rm -rf $1/$filename >/dev/null
    27         fi    
    28     done
    29 }
    30 
    31 # 因为日志目录格式为/logs/excel嵌套了两层,所以用了2层for循环
    32 for sub1 in `ls $dir`;
    33 do 
    34     if [ -d $sub1 ];
    35     then 
    36         for sub2 in `ls $sub1`;
    37         do
    38             file=$dir"/"$sub1"/"$sub2
    39 
    40             if [ -d $file ];  # 需要绝对路径
    41             then 
    42             removeLogs $file
    43             fi
    44 
    45         done
    46     fi
    47 done

    代码部分解释:

    `date + %Y%m%d -d "7 days ago"`  将当前日期往前推7天,并且输出为年月日的格式。例如:20210217。

    array=(${filename//-/ })  将命名如'dispatchorder-2021-02-12.0.log'的日志,根据'-'将文件名分割成数组:[dispatchorder,2021,02,12.0.log]。

    year=${array[1]}  取出数组的第二个元素,并将值赋给变量year。

    rm -rf $1/$filename >/dev/null  $1接收的是调用函数时传递过来的第一个参数;rm -rf $fullfilename >/dev/null 根据全路径名清空文件。

    if [-d $sub1]  如果变量是文件夹;同理[-f $sub1]判断是否为文件;这里的判断需要绝对路径。

  • 相关阅读:
    arcgis增大缩放级别
    arcgis地图窗口操作
    arcgis访问百度地图
    内存溢出和内存泄漏的区别、产生原因以及解决方案
    多线程之sleep和wait的区别
    java技术-重点方向
    技术思维VS管理思维
    几个问题
    写完百行代码,一次运行全部案例通过 是什么体验?
    分布式开放消息系统(RocketMQ)的原理与实践
  • 原文地址:https://www.cnblogs.com/hongdanni/p/14444114.html
Copyright © 2011-2022 走看看