#!/bin/bash # /// # clean_logs.sh # 描述:清理旧日志 # 作者:AI Generated # 创建日期:2026-04-06 # # 使用方式: # ./clean_logs.sh # 清理 30 天前的日志 # ./clean_logs.sh 7 # 清理 7 天前的日志 # ./clean_logs.sh --dry-run # 预览要清理的日志数量 # /// DB_HOST=${DB_HOST:-localhost} DB_PORT=${DB_PORT:-5432} DB_NAME=${DB_NAME:-wxauto} DB_USER=${DB_USER:-wxauto} DB_PASS=${DB_PASS:-wxauto_password} export PGPASSWORD="$DB_PASS" DAYS=${1:-30} DRY_RUN=false if [ "$1" == "--dry-run" ]; then DRY_RUN=true DAYS=${2:-30} fi if [ "$DRY_RUN" == true ]; then echo "=== 预览将清理的日志 (${DAYS} 天前) ===" psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" -c \ "SELECT COUNT(*) as logs_to_delete FROM logs WHERE timestamp < NOW() - INTERVAL '$DAYS days';" else echo "=== 清理 ${DAYS} 天前的日志 ===" read -p "确认删除? (y/n) " confirm if [ "$confirm" == "y" ]; then psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" -c \ "DELETE FROM logs WHERE timestamp < NOW() - INTERVAL '$DAYS days';" echo "清理完成" else echo "已取消" fi fi