45 lines
1.2 KiB
Bash
Executable File
45 lines
1.2 KiB
Bash
Executable File
#!/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
|