#!/bin/bash # 日志清理脚本 # 每小时执行一次,清理临时日志文件 echo "🧹 $(date '+%Y-%m-%d %H:%M:%S') - 开始执行日志清理任务" # 定义日志目录 NGINX_LOG_DIR="/var/log/nginx" OPENCODE_LOG_DIR="/app/logs" TEMP_LOG_DIR="/tmp" # 清理 Nginx 访问日志(保留最近7天) if [ -d "$NGINX_LOG_DIR" ]; then echo "清理 Nginx 访问日志..." find "$NGINX_LOG_DIR" -name "access.log.*" -type f -mtime +7 -delete 2>/dev/null find "$NGINX_LOG_DIR" -name "error.log.*" -type f -mtime +7 -delete 2>/dev/null echo "Nginx 日志清理完成" fi # 清理 OpenCode 临时日志(保留最近3天) if [ -d "$OPENCODE_LOG_DIR" ]; then echo "清理 OpenCode 临时日志..." find "$OPENCODE_LOG_DIR" -name "*.tmp" -type f -mtime +3 -delete 2>/dev/null find "$OPENCODE_LOG_DIR" -name "*.log.*" -type f -mtime +3 -delete 2>/dev/null echo "OpenCode 日志清理完成" fi # 清理系统临时文件 if [ -d "$TEMP_LOG_DIR" ]; then echo "清理系统临时文件..." find "$TEMP_LOG_DIR" -name "ocngx-*" -type f -mtime +1 -delete 2>/dev/null find "$TEMP_LOG_DIR" -name "node-*" -type f -mtime +1 -delete 2>/dev/null echo "临时文件清理完成" fi # 清理容器内的大于100MB的临时文件(保留重要文件) echo "检查并清理大容量临时文件..." find /tmp -name "*.tmp" -size +100M -type f -delete 2>/dev/null find /var/tmp -name "*.cache" -size +100M -type f -delete 2>/dev/null # 清理 cron 执行日志(保留最近100行) CRON_LOG="/var/log/cron.log" if [ -f "$CRON_LOG" ]; then echo "清理 cron 日志..." tail -n 100 "$CRON_LOG" > "${CRON_LOG}.tmp" 2>/dev/null && mv "${CRON_LOG}.tmp" "$CRON_LOG" 2>/dev/null echo "Cron 日志清理完成" fi # 显示清理后的磁盘使用情况 echo "📊 磁盘使用情况:" df -h | grep -E "(/$|/tmp|/var)" || echo "无法获取磁盘信息" echo "✅ $(date '+%Y-%m-%d %H:%M:%S') - 日志清理任务完成" echo "---"