删除应用日志shell脚本

本文介绍了一个用于定期清理指定目录下老旧日志文件的Shell脚本。该脚本支持按天或小时设置日志保留周期,并能处理多个日志目录。通过定时任务,可以实现自动化的日志管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#!/bin/sh
##########################################
#author lemonzone
#删除目录下N天前的所有日志,目录支持多个,逐个目录进行日志删除,删除日志符合*log.*
#第一个参数是目录的列表
#第二个参数是保留日志的天数,支持小时数(2小时:"2/24")
#使用说明,定时任务(命令:crontab -e)中增加定时清日志的脚本:
#15 3 * * * /bin/bash /data/operation_bin/remove_log.sh '/data/logs /usr/local/apache-tomcat-8.0.35' 15
#每小时清除2小时之前的日志,保留最近两小时内数据
#0 */2 * * * /bin/bash /data/operation_bin/remove_log.sh '/data/logs' 2/24
############################################
#删除日志路径,多个空格分割
LOG_DIRS="$1"
#保留日志的天数
DAYS="$2"
HOURS=""
#默认日志路径
readonly DEFAULT_LOG_DIRS="/data/logs"
#默认日志保留天数
readonly DEFAULT_DAYS="2"
readonly LOG_FILE='/tmp/remove.log'

#获取当前时间
now(){
    date "+%Y-%m-%d %H:%M:%S"
}
#记录日志info
log_info(){
    echo "[INFO] [$(now)]:$*"  >> ${LOG_FILE}
}
#记录错误日志error
log_error(){
    echo "[ERROR] [$(now)]:$*"  >> ${LOG_FILE}
}
#记录错误日志error
log_warn(){
    echo "[WARN] [$(now)]:$*"  >> ${LOG_FILE}
}
init(){
    #每月10号清理日志
    if test "X$(date +%d)" = "X10";then
        cat /dev/null > ${LOG_FILE}
    fi

    if test -z "${LOG_DIRS}";then
        LOG_DIRS="${DEFAULT_LOG_DIRS}"
    fi

    if test -z "${DAYS}";then
        DAYS="${DEFAULT_DAYS}"
    fi
    #查看是否是小时
    if test $(echo "${DAYS}"|grep "/24$" -c) -ge 1;then
        HOURS="${DAYS%%/*}"
    fi
}
main(){
    init

    local time_ago=$(($DEFAULT_DAYS*24*60))
    if test -n "${HOURS}";then
        #小时转化为分钟
       time_ago=$(($HOURS*60))
    else
        #天数转换为分钟
       time_ago=$(($DAYS*24*60))
    fi

    for log_dir in ${LOG_DIRS}
    do
        log_info "Removing $log_dir $DAYS days ago's log file"

        if test ! -d "${log_dir}";then
            log_warn "Invalid path:$log_dir"
            continue
        fi
        #删除time_ago之前日志 *log.*类型的日志
        find ${log_dir} -mmin +${time_ago} -name "*log.*" -a -type f -exec rm -rf {} \;

        log_info "Removed $log_dir $DAYS days ago's log file"
    done
}

#启动
main

转载于:https://my.oschina.net/lemonzone2010/blog/1634477

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值