• 线上服务器 , 简单的清除日志脚本


    新应用采用了新的日志目录 , 运维还不支持 , 所以只能自己手动加脚本了.

    日志格式: 不同目录不同的日志文件 .

    app/ 下是应用日志 , sql/ 下是数据库日志 , exp/ 下是异常日志 .

    每个目录下的日志文件名格式为: xxx.log.yyyy-MM-dd

    则脚本如下 cleanlog.sh:

    清日志脚本

    #!/bin/sh
    
    #日志目录
    LOG_DIR=/path/to/logs
    #不需要清除日志的目录 , 在目录下加这个文件就可以了
    NO_CLEAN=.noclean
    #不需要压缩日志的目录 , 在目录下加这个文件就可以了
    NO_TAR=.notar
    #日志保存的天数
    RESERVE_DAYS=10
    
    #取指定天数前的日期
    DAY=`date -d -$RESERVE_DAYS"days" +%Y-%m-%d`
    
    #遍历所有的目录及子目录的日志,先删除旧的日志文件
    for dir in `ls $LOG_DIR`;do
        if [ -f $LOG_DIR/$dir/$NO_CLEAN ];then
          echo $NO_CLEAN" exist in "$LOG_DIR/$dir
        else
          # 删除过期日志
          rm -rf $LOG_DIR/$dir/*$DAY*
          echo "Old files removed from "$LOG_DIR/$dir
        fi
    done
    # 取昨天的日期
    YESTERDAY=`date -d -1days +%Y-%m-%d`
    
    # 遍历所有的目录及子目录, 压缩日志文件
    for dir in `ls $LOG_DIR`;do
        if [ -f $LOG_DIR/$dir/$NO_TAR ];then
          # 不需要压缩的跳过
          echo $NO_TAR" exist in "$LOG_DIR/$dir
        else
          #进入到子目录
          cd $LOG_DIR/$dir
          for file in `ls | grep $YESTERDAY"$"`;do
            # 压缩日志文件
            tar czf "$file".tar.gz $file
            # 删除原日志文件
            rm -rf $file
            echo $file" zipped in "$LOG_DIR/$dir
          done
        fi
    done
    

    crontab 命令

    加 crontab 执行脚本, 创建文件 cron.cron(个人建议使用文件的方式创建cron , 可以适当做些注释说明) , 添加如内容:

    # 清除日志脚本
    30 2 * * * sh /path/to/scripts/cleanlog.sh
    

    执行

    最后执行crontab

    crontab cron.cron
    

    如果文章有帮助到您,请点个赞,您的反馈会让我感到文章是有价值的

  • 相关阅读:
    hausaufgabe--python 37 -- self in Class
    hausaufgabe--python 36-- Basic knowledge of Class
    hausaufgabe--python 35
    hausaufgabe--python 34
    hausaufgabe--python 33
    Retrofit2的使用简单介绍
    android中的Application作用
    第三章 Android控件架构与自定义控件详解
    第一章 Android体系与系统架构
    写在前面的话
  • 原文地址:https://www.cnblogs.com/ElEGenT/p/13204912.html
Copyright © 2020-2023  润新知