美文网首页
crontab定时清理文件,java日志,es记录等

crontab定时清理文件,java日志,es记录等

作者: _孙行者_ | 来源:发表于2022-10-31 10:38 被阅读0次

    简单运维

    开发环境硬件配置小 , 经常要清理空间 . 写个简单的清理脚本去运维 .

    清理java日志 .

    # cleanLog.sh
    # 日志目录
    LOG_DIR=/path/to/log
    
    cd $LOG_DIR
    
    # 历史日志的文件格式是 , app-xxxx-xx-xx.log. 捞大于1k的文件去清空
    for logfile in `find ./ -size +1k -name "app*.log"`;do
        cat /dev/null > $logfile
        echo $logfile "清理完成"
    done
    

    清理 gc 日志 .

    # cleanGC.sh
    # 日志目录
    LOG_DIR=/path/to/gc
    
    cd $LOG_DIR
    
    # 历史日志的文件格式是 , gc-xxxx-xx-xx.log. 捞大于1k的文件去清空
    for gcfile in `find ./ -size +1k -name "gc*.log"`;do
        cat /dev/null > $gcfile
        echo $gcfile "清理完成"
    done
    

    清理 es 空间 .

    有些流水日志写到es里 , 排查要用 ,又不能关. 只能手动定时清理了.

    删除整个索引

    有些是按时间划分了冷热数据 . 历史数据直接删了就行了. 执行删除就会释放空间的.

    # cleanES.sh
    # 删除前一天的索引数据
    DAY=`date -d -1"days" +%Y-%m-%d`
    curl -X DELETE http://127.0.0.1:9200/DailyAccount-$DAY
    

    只保留最近数据

    有些只有一个索引, 那么只保留最近数据 .

    1)delete_by_query设置检索近100天数据;

    2)执行forcemerge操作,手动释放磁盘空间。

    # 删除动作
    curl -H'Content-Type:application/json' -d'{
        "query": {
            "range": {
                "pt": {
                    "lt": "now-100d",
                    "format": "epoch_millis"
                }
            }
        }
    }
    ' -XPOST "http://127.0.0.1:9200/logstash_*/_delete_by_query?conflicts=proceed"
    
    # merge动作
    curl -XPOST 'http://127.0.0.1:9200/_forcemerge?only_expunge_deletes=true&max_num_segments=1'
    

    crontab 命令

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

    # cron.cron文件
    
    # 清理日志
    0 0 1 * * sh /path/to/scripts/cleanLog.sh
    # 清理GC
    0 0 2 * * sh /path/to/scripts/cleanGC.sh
    # 清理ES
    0 0 3 * * sh /path/to/scripts/cleanES.sh
    

    将脚本添加到 crontab

    crontab cron.cron
    

    确认crontab

    crontab -l
    

    相关文章

      网友评论

          本文标题:crontab定时清理文件,java日志,es记录等

          本文链接:https://www.haomeiwen.com/subject/taertdtx.html