#!/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
日志清理
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 添加一个定时任务,定时执行日志清理脚本: # (crontab -l 2>/dev/null || true; e...
- 需求背景 解决某些中间件或者应用日志无法自动清理的情况,比如:Nacos 的 access 日志清理,临时目录文件...
- 一. 整体收益 实现自动化清理应用日志,减少运维人工清理操作,在一定程度上提高了系统可用性和稳定性,同时提高运维效...
- 前言 透过Zabbix文件系统监控告警发现日志未定时清理,进一步排查后确认前同事写的trimlog脚本在某些服务器...