系统时区或时间同步失效会导致macOS计划任务错误触发或不执行,核心解决步骤是先校准系统时间与时区,再检查launchd、crontab等调度机制是否依赖正确时区设置。
系统时区或时间同步失效,会直接导致
mac
os 的计划任务(如
launchd
定时作业、
crontab
、automator 快捷指令调度、日历提醒、备份时间点等)在错误时刻触发,甚至完全不执行。这不是脚本写错了,而是整个时间基准偏了——比如你设的是每天 9:00 运行,但系统实际认为是 8:52,那任务就永远“还没到点”。解决核心在于:**先稳住时间,再确认任务调度机制是否依赖正确时区**。
确认并修复时间与时区基础状态
计划任务失败的第一排查项,永远是系统时间本身是否可信:
打开「系统设置」→「通用」→「日期与时间」,确保「自动设定日期与时间」和「使用当前位置自动设定时区」均已开启;锁图标已解锁,且输入了管理员密码
点击右下角「现在获取时间」,观察是否秒级响应并完成同步;若卡住或提示失败,说明 NTP 通信异常
前往「隐私与安全性」→「定位服务」→「系统服务…」,务必勾选「设定时区」——这是自动时区更新的底层开关,关闭即失效
终端执行
sudo sntp -sS time.apple.com
强制校准一次,验证时间能否被立即修正
检查 launchd 任务是否绑定错误时区
macOS 原生计划任务(
launchd
)默认使用系统时区,但部分 plist 配置可能显式指定
StartCalendarInterval
时未声明时区,或受用户环境变量影响:
用
launchctl list
查看已加载任务,找到对应 job label
用
launchctl print gui/
/