日志清理

#!/bin/bash

base_log_path=/opt/applog
app_name_1="logs/inventory"
app_name_2="dubbo"

part_name=$(date +%Y)

compress_logs() {
    local path="$1"
    local name="$2"

    # 更严格的正则表达式验证
    if [[ "$name" =~ ^[a-zA-Z0-9_/-]+$ ]]; then
        files=$(find "$path/$name" -type f -name "*$part_name*" 2>/dev/null)
        if [ -n "$files" ]; then
            while IFS= read -r file; do
                if [[ $file =~ "\.gz$" ]]; then
                    echo "$file"
                else
                    gzip "$file"
                fi
            done <<< "$files"
        fi
    else
        echo "Invalid name: $name"
    fi
}

# 压缩日志文件
compress_logs "$base_log_path" "$app_name_1"
compress_logs "$base_log_path" "$app_name_2"

# 删除超过3小时的日志文件
find "$base_log_path/$app_name_1" -type f -mmin +180 -name "*.gz" | xargs rm -f

# 删除超过2天的日志文件
find "$base_log_path/$app_name_2" -type f -mtime +2 -name "*.gz" | xargs rm -f
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容