Mac每日23:00关机需分场景:若要关机前自动保存VS Code、Sublime Text等未存代码,必须用快捷指令+AppleScript触发编辑器的⌘⇧S保存动作再关机;若仅需准时关机且已确保代码保存,则推荐pmset命令实现系统级可靠调度。

你想让Mac每天23:00准时关机,同时确保VS Code、Sublime Text等编辑器中所有未保存的代码文件在关机前自动保存——这需要绕过系统默认“强制终止应用”的逻辑,用AppleScript主动触发编辑器的保存动作,再执行关机。
用快捷指令+AppleScript实现关机前自动保存代码
这是目前唯一能真正捕获并干预编辑器保存行为的方法,适用于VS Code、Sublime Text、TextMate等主流代码编辑器,不依赖终端权限配置,全程图形化操作。
打开“快捷指令”App → 切换到“自动化”标签页 → 点击右上角“+”号 → 选择“创建个人自动化”。
在触发器列表中选择“特定时间”,设定目标时间为23:00,开启“重复”开关,点击“下一步”。
点击“添加操作” → 搜索“运行AppleScript” → 选择该操作 → 在脚本框中粘贴以下内容:
tell application "System Events"\n if (name of processes) contains "Code" then\n tell application "Visual Studio Code" to activate\n delay 0.5\n key code 15 using {command down, shift down} -- ⌘⇧S 全部保存\n delay 1\n end if\n if (name of processes) contains "Sublime Text" then\n tell application "Sublime Text" to activate\n delay 0.5\n key code 15 using {command down, shift down}\n delay 1\n end if\nend tell\ntell app "System Events" to shut down
关闭顶部“运行前询问”,点击“完成”保存。首次运行时,系统会弹出权限请求,在“系统设置→隐私与安全性→自动化”中为“快捷指令”授予对“Visual Studio Code”和“Sublime Text”的控制权限。
用终端命令组合实现静默关机(不保存代码)
如果你只需要标准关机流程且不关心编辑器是否已保存,此方法最轻量,但【不会触发任何应用内保存逻辑,未保存的代码将丢失】。
打开“终端”,输入:
sudo shutdown -h 23:00
输入管理员密码(无显示),回车后系统提示“Shutdown scheduled for …”。
如需取消,立即执行:
sudo shutdown -c
用pmset命令设置每日可靠关机(推荐搭配钥匙串锁定)
此方法由系统守护进程直接调度,即使你未登录、终端已关闭、甚至图形界面崩溃,关机仍会准时执行,适合对稳定性要求高的场景。
第一步:清空旧任务
在终端中输入:
sudo pmset repeat cancel
第二步:设置每日23:00关机
输入:
sudo pmset repeat shutdown MTWRFSU 23:00:00
第三步:验证是否生效
运行:
pmset -g sched
输出中必须出现一行含“shutdown”和“23:00:00”的条目,否则设置失败。
注意:此命令仅触发系统级关机,【不调用任何应用的保存接口,务必确保代码已手动保存或编辑器开启了自动保存】。

















