Automator本身不支持定时重启应用,但可通过封装“退出+启动”AppleScript动作,再由日历提醒或launchd定时触发实现:先用Automator创建快速操作执行quit与activate,再分别配置日历事件或plist文件设定具体时间(如每天10:00),确保应用名准确、权限已授权。

Automator 本身不直接支持“定时重启应用”,但结合 macOS 原生机制(如 launchd、日历提醒、AppleScript),完全可以实现“在指定时间自动退出再启动某个 App”的效果。关键不是靠 Automator 单独完成定时,而是用它封装核心动作(退出 + 启动),再由系统调度器触发。
用 Automator 封装“退出 + 启动”逻辑
这是整个方案的基础——把重复操作变成一个可调用的单元:
- 打开 Automator → 新建文稿 → 选择“快速操作”(便于后续被脚本或日历调用)
- 拖入“运行 AppleScript”动作,粘贴以下代码(以重启 Slack 为例):
try
tell application "Slack" to quit
end try
delay 1.5
tell application "Slack" to activate
end run
- 保存为“重启 Slack”,格式选“快速操作”;确保“工作流程收到当前”设为“无输入”,位置选“访达”
- 此时该操作已注册进系统,可在任意界面通过快捷键或日历调用
方案一:用日历提醒定时触发(最简单,用户级)
适合每天固定时间执行,无需终端操作,全图形化:
- 将上一步保存的“重启 Slack”快速操作,复制到路径:
~/Library/Workflows/Applications/Calendar/ - 打开“日历”App → 新建事件 → 设置时间(如每天 10:00)→ 勾选“重复”
- 在“提醒”栏点击“+”,选择“运行脚本” → 找到并选中“重启 Slack.workflow”
- 保存后,到点系统会自动执行退出再启动(不弹窗,静默运行)
方案二:用 launchd 精准定时(推荐,稳定可靠)
比日历更底层、更准时,且支持开机即生效,适合长期运行:
- 在终端创建 plist 文件:
nano ~/Library/LaunchAgents/com.user.restart.slack.plist - 填入以下内容(示例:每天 10:00 重启 Slack):
<!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.restart.slack</string>
<key>ProgramArguments</key>
<array>
<string>osascript</string>
<string>-e</string>
<string>tell app "Slack" to quit</string>
<string>-e</string>
<string>delay 1.5</string>
<string>-e</string>
<string>tell app "Slack" to activate</string>
</array>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>10</integer>
<key>Minute</key>
<integer>0</integer>
</dict>
</dict>
</plist>
- 保存后加载:
launchctl load ~/Library/LaunchAgents/com.user.restart.slack.plist - 验证是否生效:
launchctl list | grep restart(有输出即成功)
注意事项与排错
实际使用中容易卡在几个环节:
-
App 名称必须完全一致:比如 VS Code 是
"Visual Studio Code",不是"Code";可通过 AppleScript 中tell application "xxx" to name查证 - 权限问题:首次运行若提示“无法验证开发者”,右键 .app 或终端命令 → “打开” → 点“仍要打开”;必要时在“系统设置 → 隐私与安全性 → 完整磁盘访问”中添加 Terminal 或 Script Editor
- 启动失败常见原因:App 尚未安装、路径含空格未转义、未签名导致 Gatekeeper 拦截(建议从官网下载正式版)
-
避免冲突:如果 App 正在崩溃或无响应,
quit可能卡住,可改用killall -9 "Slack"强制终止(需在 Shell 脚本中执行)

















