macbook可设置每日凌晨自动关机并清空缓存:用pmset定时关机,配合logouthook执行清理脚本;或用快捷指令+自动化实现带确认的清理关机,二者均需正确配置权限与路径以确保生效。

你想让MacBook在每天凌晨自动关机,同时在关机前清空系统缓存释放空间、减少卡顿,避免手动清理遗漏或忘记执行——这需要将关机动作与缓存清理脚本绑定,不能只靠系统自带的定时关机功能单独完成。
用终端pmset命令设置每日凌晨关机并触发缓存清理
这是最可靠的方式,由系统守护进程launchd托管,不依赖用户是否登录、终端是否开启,且能精确到秒。关键在于把清理缓存的操作封装进关机前的脚本中,再通过pmset调度执行。
第一步:打开“终端”(Command + 空格,输入“终端”回车)。
第二步:创建清理缓存的可执行脚本。粘贴并运行以下命令:
sudo tee /usr/local/bin/clean_cache_on_shutdown.sh # 清理用户级缓存
rm -rf ~/Library/Caches/*
# 清理系统级临时缓存(需权限)
sudo rm -rf /private/var/folders/*
# 清理日志压缩包(保留最近7天)
sudo find /var/log -name "*.gz" -mtime +7 -delete
EOF
第三步:赋予脚本执行权限。运行:
sudo chmod +x /usr/local/bin/clean_cache_on_shutdown.sh
第四步:用pmset注册每日凌晨02:00关机任务,并强制调用该脚本。运行:
sudo pmset repeat shutdown MTWRFSU 02:00:00
第五步:创建一个系统级关机前钩子,使清理脚本在关机前10秒运行。运行:
sudo defaults write /Library/Preferences/com.apple.loginwindow LogoutHook /usr/local/bin/clean_cache_on_shutdown.sh
【LogoutHook仅在用户点击关机或系统执行shutdown时触发,不会在睡眠或重启时运行】。所以必须搭配pmset的shutdown调度,不能用restart或sleep替代。
用快捷指令自动化实现带确认的凌晨关机+缓存清理
如果你希望关机前看到提醒、能手动取消,同时确保缓存清理不被跳过,这个方法更可控,但要求你必须已登录且Mac未休眠。
方法一:新建快捷指令
打开“快捷指令”App → 点右上角“+” → 命名“凌晨清理关机” → 点“添加操作” → 搜索“运行脚本” → 选择“Shell” → 脚本框中粘贴:
rm -rf ~/Library/Caches/* && sudo rm -rf /private/var/folders/* 2>/dev/null
方法二:添加关机动作
继续点“添加操作” → 搜索“关机” → 选择“关机”操作 → 在下方勾选“运行前询问”。
方法三:创建定时自动化
切换到“自动化”标签页 → “创建个人自动化” → 选择“特定时间” → 设为每天01:55 → 关闭“运行前询问” → 点“下一步” → 添加操作 → 选择“运行快捷指令” → 找到刚建的“凌晨清理关机” → 完成。
这一步提前5分钟触发,留出时间执行清理脚本并弹出确认窗口;若你点击“取消”,关机中断,但缓存已清——脚本本身不依赖关机成功与否。
验证缓存是否真被清空
执行完任一方案后,可在下次关机前手动检查清理效果:
打开“访达”,按下Shift + Command + G,输入~/Library/Caches,回车查看是否为空目录。
再按同样组合键,输入/private/var/folders,回车;若能看到多个以字母开头的子文件夹(如C/、d/),说明系统已重建缓存路径,旧缓存确实被删除。
最后运行命令:
sudo du -sh /private/var/folders/* 2>/dev/null | sort -hr | head -3
输出前三行总和若明显小于1GB,说明清理生效;若仍显示数GB,可能是脚本权限不足或路径写错。
运行:
sudo launchctl bootout system/com.apple.logd
该命令强制重启日志服务,确保后续日志清理脚本能正常写入新规则。











