macos无图形化自动清理开关,但可通过三步实现稳定安全的周期性清理:1.启用废纸篓30天自动清空;2.用sudo log config限制诊断日志为2gb;3.用launchd定时执行脚本清理用户缓存与日志,并集成brew cleanup。

启用废纸篓自动清空(最基础且系统级支持)
这是唯一被 macOS 全局识别并默认执行的自动清理行为,影响所有已删除文件(含你手动移入废纸篓的更新包):
- 打开「访达」→「偏好设置」→「高级」→ 勾选「30天后移除废纸篓中的项目」
- 该策略同时适用于本地废纸篓和 iCloud 同步废纸篓(若开启桌面与文稿同步)
- 无需重启,设置后约1小时内生效;如未触发,终端运行 killall Finder 刷新即可
限制 Unified Logging 磁盘占用(防诊断数据失控膨胀)
/var/db/diagnostics 下的日志归档虽非“软件包”,但长期不控会 silently 占满数十 GB,常被误认为是更新残留:
- 终端执行:sudo log config --mode "keep-rolling-2GB"(推荐 1–3 GB,依你磁盘余量调整)
- 该命令让系统在接近限额时自动淘汰最旧归档周期(如“90 days ago”),保留近期完整诊断能力
- 验证是否生效:sudo du -sh /var/db/diagnostics,观察大小是否稳定在设定值附近
配置 launchd 定时清理用户级缓存与日志
~/Library/Caches 和 ~/Library/Logs 是第三方软件、浏览器、开发工具等产生冗余包的主要温床,系统不轮转,但可安全交由定时任务处理:
- 创建脚本(例如保存为 ~/bin/clean-user-caches.sh):
#!/bin/bash find "$HOME/Library/Caches" -type f -mtime +30 -delete find "$HOME/Library/Logs" -type f \( -name "*.log" -o -name "*.out" \) -mtime +60 -delete
- 赋予执行权限:chmod +x ~/bin/clean-user-caches.sh
- 用 launchd 创建每周运行一次的 plist(避免每日清理干扰 App 运行中文件锁定)
- 此方式不依赖第三方工具,不修改系统核心路径,仅清理明确过期的用户级文件
配合 Homebrew 自动维护(针对命令行工具更新包)
如果你常用 brew 安装 CLI 工具(如 node、python、ffmpeg),其旧版本 bottle 缓存也会堆积:
- Homebrew 自带 brew cleanup,但需主动调用;可将其加入上述 launchd 脚本中:
- brew update && brew upgrade && brew cleanup -s(-s 表示显示并清理所有旧版 bottle)
- 注意:brew cleanup -s 不会删当前正在用的版本,只清已卸载或被覆盖的旧版缓存











