1
0
mirror of https://github.com/tw93/Mole.git synced 2026-02-04 14:26:46 +00:00

Improve performance and process handling

This commit is contained in:
Tw93
2025-12-28 19:37:42 +08:00
parent e7546d762b
commit faac42cb62
4 changed files with 39 additions and 7 deletions

View File

@@ -241,7 +241,25 @@ clean_project_caches() {
# 4. Clean up any stuck processes
for pid in $next_pid $py_pid; do
if kill -0 "$pid" 2> /dev/null; then
# Send TERM signal first
kill -TERM "$pid" 2> /dev/null || true
# Wait up to 2 seconds for graceful termination
local grace_period=0
while [[ $grace_period -lt 20 ]]; do
if ! kill -0 "$pid" 2> /dev/null; then
break
fi
sleep 0.1
((grace_period++))
done
# Force kill if still running
if kill -0 "$pid" 2> /dev/null; then
kill -KILL "$pid" 2> /dev/null || true
fi
# Final wait (should be instant now)
wait "$pid" 2> /dev/null || true
else
wait "$pid" 2> /dev/null || true

View File

@@ -321,12 +321,25 @@ clean_dev_network() {
safe_clean ~/Library/Caches/wget/* "macOS wget cache"
}
# Clean orphaned SQLite temporary files (-shm and -wal files)
# Strategy: Only clean truly orphaned temp files where base database is missing
# This is fast and safe - skip complex checks for files with existing base DB
# Env: DRY_RUN
clean_sqlite_temp_files() {
# Skip this cleanup due to low ROI (收益比低,经常没东西可清理)
# Find scan is still slow even optimized, and orphaned files are rare
return 0
}
# Main developer tools cleanup function
# Calls all specialized cleanup functions
# Env: DRY_RUN
clean_developer_tools() {
stop_section_spinner
# Clean SQLite temporary files first
clean_sqlite_temp_files
clean_dev_npm
clean_dev_python
clean_dev_go

View File

@@ -78,8 +78,9 @@ scan_external_volumes() {
start_section_spinner "Scanning $volume_count external volume(s)..."
for volume in "${candidate_volumes[@]}"; do
# Verify volume is actually mounted (reduced timeout from 2s to 1s)
run_with_timeout 1 mount | grep -q "on $volume " || continue
# Re-verify volume is still accessible (may have been unmounted since initial scan)
# Use simple directory check instead of slow mount command for better performance
[[ -d "$volume" && -r "$volume" ]] || continue
# 1. Clean Trash on volume
local volume_trash="$volume/.Trashes"

View File

@@ -185,13 +185,13 @@ safe_sudo_find_delete() {
local age_days="${3:-7}"
local type_filter="${4:-f}"
# Validate base directory
if [[ ! -d "$base_dir" ]]; then
log_error "Directory does not exist: $base_dir"
return 1
# Validate base directory (use sudo for permission-restricted dirs)
if ! sudo test -d "$base_dir" 2>/dev/null; then
debug_log "Directory does not exist (skipping): $base_dir"
return 0
fi
if [[ -L "$base_dir" ]]; then
if sudo test -L "$base_dir" 2>/dev/null; then
log_error "Refusing to search symlinked directory: $base_dir"
return 1
fi