macos 无一键清理开关,自动清理依赖分层原生机制:1. 废纸篓30天自动清空(唯一全局生效);2. 限制unified logging磁盘占用;3. 配置/var/log日志轮转压缩;4. launchd定时清理用户缓存与日志。

macOS 没有“一键清理系统垃圾”的图形化开关,也不定义统一的“垃圾文件夹”。所谓自动清理,本质是分层启用系统原生机制,让缓存、日志、废纸篓等按规则自动释放空间,不依赖第三方工具或高危命令。
启用废纸篓30天自动清空(唯一系统级自动删除)
这是 macOS 唯一全局生效的自动清理行为:
- 打开访达 → 顶部菜单栏「访达」→「偏好设置」→「高级」→ 勾选「30天后移除废纸篓中的项目」
- 设置立即生效,无需重启;若未响应,终端运行
killall Finder刷新即可 - 该策略同时作用于本地废纸篓和 iCloud 同步废纸篓(前提是已开启 iCloud 桌面与文稿)
限制 Unified Logging 磁盘占用(防诊断数据失控)/var/db/diagnostics 默认无限增长,可能悄悄吃掉数十 GB:
- 终端执行:
sudo log config --mode "keep-rolling-2GB"(推荐值 1–3 GB,依剩余磁盘空间调整) - 系统会自动淘汰最旧归档周期,保留近期完整诊断能力
- 验证效果:
sudo du -sh /var/db/diagnostics,观察大小是否稳定在设定值附近
配置 /var/log 日志轮转与压缩(传统服务日志)/var/log 下的 system.log、secure.log 等由 newsyslog 管理:
- 确保
/etc/newsyslog.conf中对应条目含gzip标志(默认已启用) -
newsyslog每小时自动触发轮转;可手动测试:sudo newsyslog -n(仅预演)或sudo newsyslog(立即执行) - 轮转后旧日志自动压缩为
.gz,过期归档被删除,无需干预
定时清理用户级缓存与日志(~/Library/Caches 和 ~/Library/Logs)
这部分无系统轮转,但可安全交由 launchd 定期处理:
- 创建脚本(如
~/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 - 配置
launchdplist 实现每周运行一次(避开 App 运行中文件锁定风险)
不复杂但容易忽略











