#!/bin/bash # 定期清理测试生成物 + PyCharm freeze 转储,防止"系统数据"被打满。 # 由 crontab 每天调度(见文件末尾安装说明)。详见记忆 reference-midscene-disk-growth。 set -u PROJ="/Users/woan/Desktop/AI_UIAutomation" LOG="$PROJ/scripts/clean-disk.log" { echo "===== $(date '+%F %T') 开始清理 =====" # 1. midscene 报告:纯生成产物,全清 if [ -d "$PROJ/midscene_run" ]; then sz=$(du -sh "$PROJ/midscene_run" 2>/dev/null | cut -f1) rm -rf "$PROJ/midscene_run"/* 2>/dev/null echo "midscene_run 清理前 $sz → 0" fi # 2. reports:只保留"最近一次测试报告"(最新 AIHub_*.html 及其同一次运行的截图/日志)。 # 以第 2 新的报告为分界,比它旧的全删。 if [ -d "$PROJ/reports" ]; then cutoff=$(ls -t "$PROJ/reports"/AIHub_*.html 2>/dev/null | sed -n '2p') if [ -n "$cutoff" ] && [ -f "$cutoff" ]; then n=$(find "$PROJ/reports" -type f ! -newer "$cutoff" 2>/dev/null | wc -l | tr -d ' ') find "$PROJ/reports" -type f ! -newer "$cutoff" -delete 2>/dev/null find "$PROJ/reports" -type d -empty -delete 2>/dev/null echo "reports 只留最近一次,删除旧文件 $n 个" else echo "reports 报告数 <=1,不清理" fi fi # 3. PyCharm freeze 转储:安全网(IDE 卡死会狂堆,实测堆到 23G) dumps=$(ls -d ~/Library/Logs/JetBrains/PyCharm*/threadDumps-* 2>/dev/null | wc -l | tr -d ' ') rm -rf ~/Library/Logs/JetBrains/PyCharm*/threadDumps-* 2>/dev/null echo "PyCharm 转储目录清理 $dumps 个" echo "可用空间: $(df -h / | tail -1 | awk '{print $4}')" } >> "$LOG" 2>&1 # 只保留日志最后 200 行 tail -n 200 "$LOG" > "$LOG.tmp" 2>/dev/null && mv "$LOG.tmp" "$LOG" # ---- 安装(每 2 周跑一次:每月 1 号、15 号 04:13)---- # chmod +x scripts/clean-disk.sh # (crontab -l 2>/dev/null; echo "13 4 1,15 * * /Users/woan/Desktop/AI_UIAutomation/scripts/clean-disk.sh") | crontab -