Mac可通过系统自带功能实现定期自动清理:启用「储存空间」中的自动清理开关、用快捷指令定时清空~/Library/Caches、安全删除/var/log归档日志,或通过launchd设置每月静默任务。
mac 可以通过系统自带功能 + 简单脚本组合,实现定期自动清理缓存与日志,无需安装第三方工具,也无需频繁手动操作。关键是:用好 macos 原生的“自动清理开关” + 安全可控的手动路径定时任务,避免误删、不依赖密码、不破坏系统稳定性。
启用系统级自动清理(最安全、零配置)
这是苹果官方提供的“静默清理”机制,会按需自动移除已确认无风险的日志和缓存,无需你干预:
- 打开「系统设置」→「通用」→「储存空间」→ 点击右下角「管理」
- 在弹出窗口中,开启两个关键开关:「储存空间不足时清除可安全移除的日志和缓存」 和 「自动清倒废纸篓(30天后)」
- 这两项一旦启用,系统会在磁盘空间紧张或后台空闲时自动触发清理,且只处理已被标记为“可丢弃”的文件(如归档日志、过期缓存),完全跳过运行中组件
定时清理用户缓存(~/Library/Caches)
这个目录占“系统数据”大头,且所有内容都可重建。用 macOS 自带的“自动化”App 设置每周清理一次:
- 打开「快捷指令」App → 点击右上角「+」新建快捷指令 → 命名为「清理用户缓存」
- 添加操作:搜索并选择「运行 Shell 脚本」→ 在脚本框中粘贴以下命令:
rm -rf ~/Library/Caches/* - 再添加操作:「清倒废纸篓」(确保已启用自动清倒,这步可选)
- 点击右上角「…」→「添加到“快速操作”」→ 返回「访达」→「操作」菜单即可一键运行;也可在「快捷指令」中设为「每日/每周」自动化执行(需开启“个人自动化”)
安全清理系统日志归档(/var/log)
/var/log 中真正能删的是带 .gz、.old、数字后缀的归档日志(如 system.log.0.gz),当前运行日志(system.log)必须保留。建议每月执行一次:
- 新建快捷指令,添加「运行 Shell 脚本」,输入:
sudo find /var/log -name "*.gz" -o -name "*.old" -o -name "*.[0-9]" | xargs rm -f - 首次运行时会提示输入管理员密码,之后自动化任务将记住授权(需在「系统设置」→「隐私与安全性」→「自动化」中允许该快捷指令使用“终端”)
- 该命令只匹配归档格式,不会碰 system.log、secure.log 等活跃日志,安全边界清晰
补充:用 launchd 实现更底层的定时清理(进阶可选)
如果你习惯终端,可用 macOS 原生的 launchd 创建每月一次的清理任务,比快捷指令更轻量:
- 在终端中执行:
nano ~/Library/LaunchAgents/com.user.clearlogs.plist - 粘贴以下内容(清理 /var/log 归档 + 用户缓存):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.user.clearlogs</string>
<key>ProgramArguments</key>
<array>
<string>sh</string>
<string>-c</string>
<string>rm -rf ~/Library/Caches/* && find /var/log -name "*.gz" -o -name "*.old" | xargs rm -f</string>
</array>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>3</integer>
<key>Minute</key>
<integer>0</integer>
<key>Day</key>
<integer>1</integer>
</dict>
</dict>
</plist> - 保存后执行:
launchctl load ~/Library/LaunchAgents/com.user.clearlogs.plist - 此后每月1日凌晨3点自动运行,全程静默,不弹窗、不需交互

















