From 1b2da97032753e1d73fea39d791238057a9dacca Mon Sep 17 00:00:00 2001 From: Tw93 Date: Sat, 6 Dec 2025 20:46:25 +0800 Subject: [PATCH] Log cleaning does not take into account time --- lib/clean/system.sh | 16 +++++++------- lib/core/common.sh | 52 ++++++++++++++++++++++++++++++--------------- 2 files changed, 43 insertions(+), 25 deletions(-) diff --git a/lib/clean/system.sh b/lib/clean/system.sh index dbbf251..a250554 100644 --- a/lib/clean/system.sh +++ b/lib/clean/system.sh @@ -11,20 +11,20 @@ clean_deep_system() { safe_sudo_find_delete "/Library/Caches" "*.tmp" "$MOLE_TEMP_FILE_AGE_DAYS" "f" || true safe_sudo_find_delete "/Library/Caches" "*.log" "$MOLE_LOG_AGE_DAYS" "f" || true - # Clean old temp files - use real paths (macOS /tmp is symlink to /private/tmp) + # Clean temp files - use real paths (macOS /tmp is symlink to /private/tmp) local tmp_cleaned=0 safe_sudo_find_delete "/private/tmp" "*" "${MOLE_TEMP_FILE_AGE_DAYS}" "f" && tmp_cleaned=1 || true safe_sudo_find_delete "/private/var/tmp" "*" "${MOLE_TEMP_FILE_AGE_DAYS}" "f" && tmp_cleaned=1 || true - [[ $tmp_cleaned -eq 1 ]] && log_success "Old system temp files (${MOLE_TEMP_FILE_AGE_DAYS}+ days)" + [[ $tmp_cleaned -eq 1 ]] && log_success "System temp files" # Clean crash reports safe_sudo_find_delete "/Library/Logs/DiagnosticReports" "*" "$MOLE_CRASH_REPORT_AGE_DAYS" "f" || true - log_success "Old system crash reports (${MOLE_CRASH_REPORT_AGE_DAYS}+ days)" + log_success "System crash reports" # Clean system logs - use real path (macOS /var is symlink to /private/var) safe_sudo_find_delete "/private/var/log" "*.log" "$MOLE_LOG_AGE_DAYS" "f" || true safe_sudo_find_delete "/private/var/log" "*.gz" "$MOLE_LOG_AGE_DAYS" "f" || true - log_success "Old system logs (${MOLE_LOG_AGE_DAYS}+ days)" + log_success "System logs" # Clean Library Updates safely - skip if SIP is enabled to avoid error messages # SIP-protected files in /Library/Updates cannot be deleted even with sudo @@ -90,15 +90,15 @@ clean_deep_system() { [[ $code_sign_cleaned -gt 0 ]] && log_success "Browser code signature caches ($code_sign_cleaned items)" - # Clean system diagnostics logs (older than 30 days) + # Clean system diagnostics logs safe_sudo_find_delete "/private/var/db/diagnostics/Special" "*" "$MOLE_LOG_AGE_DAYS" "f" || true safe_sudo_find_delete "/private/var/db/diagnostics/Persist" "*" "$MOLE_LOG_AGE_DAYS" "f" || true safe_sudo_find_delete "/private/var/db/DiagnosticPipeline" "*" "$MOLE_LOG_AGE_DAYS" "f" || true - log_success "Old system diagnostic logs (${MOLE_LOG_AGE_DAYS}+ days)" + log_success "System diagnostic logs" - # Clean power logs (older than 30 days) + # Clean power logs safe_sudo_find_delete "/private/var/db/powerlog" "*" "$MOLE_LOG_AGE_DAYS" "f" || true - log_success "Old power logs (${MOLE_LOG_AGE_DAYS}+ days)" + log_success "Power logs" } # Clean Time Machine failed backups diff --git a/lib/core/common.sh b/lib/core/common.sh index 4fa9cfb..2fdee12 100755 --- a/lib/core/common.sh +++ b/lib/core/common.sh @@ -38,12 +38,12 @@ readonly ICON_NAV_LEFT="←" readonly ICON_NAV_RIGHT="→" # Global configuration constants -readonly MOLE_TEMP_FILE_AGE_DAYS=7 # Temp file cleanup threshold +readonly MOLE_TEMP_FILE_AGE_DAYS=0 # Temp file cleanup threshold (0 = all) readonly MOLE_ORPHAN_AGE_DAYS=60 # Orphaned data threshold readonly MOLE_MAX_PARALLEL_JOBS=15 # Parallel job limit readonly MOLE_MAIL_DOWNLOADS_MIN_KB=5120 # Mail attachments size threshold (~5MB) -readonly MOLE_LOG_AGE_DAYS=30 # System log retention -readonly MOLE_CRASH_REPORT_AGE_DAYS=30 # Crash report retention +readonly MOLE_LOG_AGE_DAYS=0 # System log retention (0 = all) +readonly MOLE_CRASH_REPORT_AGE_DAYS=0 # Crash report retention (0 = all) readonly MOLE_SAVED_STATE_AGE_DAYS=7 # App saved state retention readonly MOLE_TM_BACKUP_SAFE_HOURS=48 # Time Machine failed backup safety window @@ -250,13 +250,22 @@ safe_find_delete() { # Execute find with safety limits debug_log "Finding in $base_dir: $pattern (age: ${age_days}d, type: $type_filter)" - - command find "$base_dir" \ - -maxdepth 3 \ - -name "$pattern" \ - -type "$type_filter" \ - -mtime "+$age_days" \ - -delete 2> /dev/null || true + + # When age_days is 0, delete all matching files without time restriction + if [[ "$age_days" -eq 0 ]]; then + command find "$base_dir" \ + -maxdepth 3 \ + -name "$pattern" \ + -type "$type_filter" \ + -delete 2> /dev/null || true + else + command find "$base_dir" \ + -maxdepth 3 \ + -name "$pattern" \ + -type "$type_filter" \ + -mtime "+$age_days" \ + -delete 2> /dev/null || true + fi return 0 } @@ -288,13 +297,22 @@ safe_sudo_find_delete() { # Execute find with safety limits debug_log "Finding (sudo) in $base_dir: $pattern (age: ${age_days}d, type: $type_filter)" - - sudo command find "$base_dir" \ - -maxdepth 3 \ - -name "$pattern" \ - -type "$type_filter" \ - -mtime "+$age_days" \ - -delete 2> /dev/null || true + + # When age_days is 0, delete all matching files without time restriction + if [[ "$age_days" -eq 0 ]]; then + sudo command find "$base_dir" \ + -maxdepth 3 \ + -name "$pattern" \ + -type "$type_filter" \ + -delete 2> /dev/null || true + else + sudo command find "$base_dir" \ + -maxdepth 3 \ + -name "$pattern" \ + -type "$type_filter" \ + -mtime "+$age_days" \ + -delete 2> /dev/null || true + fi return 0 }