• 定时清理日志的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]判断是否为文件;这里的判断需要绝对路径。

  • 相关阅读:
    一个生成随机颜色的js函数
    实战vue代码
    vue练习用免费开源api大全
    vue-resource插件使用
    专题 查找与排序的Java代码实现(一)
    十字链表的画法
    20162322 朱娅霖 作业009 堆和优先队列
    20162322 朱娅霖 作业008 二叉查找树
    20162322 朱娅霖 实验报告二 树
    20162322 朱娅霖 作业007 树
  • 原文地址:https://www.cnblogs.com/hongdanni/p/14444114.html
Copyright © 2020-2023  润新知