Mac 上的唤醒 / CRON

Mac 上的唤醒 / CRON

我有一台运行 macOS Catalina 的旧 iMac。我安排了 2 个 CRON 作业,一项在早上运行(例如上午 8 点),一项在下午运行(例如下午 5 点)。 CRON 作业运行一些 R 脚本,以防万一。

鉴于如果机器处于睡眠状态,CRON 作业将不会执行,我想知道确保这两个作业都执行的最佳方法是什么。现在,我已经安排 Mac 在早上“醒来”,晚上“关闭”,但除非我阻止它完全进入睡眠状态,否则下午的工作不会执行。

我想到了两种可能的解决方案:首先,使用不同的计划设置不同的用户配置文件 - 但这不起作用,因为每台计算机只有一个计划。其次,“小睡”,但这似乎也不能执行任务,或者至少不能始终如一地执行任务。现在,除了不允许睡觉或建造一个机器人在下午移动鼠标并唤醒机器之外,我已经没有选择了......

还有更好的想法吗?

谢谢,菲利普

答案1

苹果打算逐步淘汰cron(但这种情况持续了很长时间,我忘记了他们第一次宣布这一消息的时间:-))。然而,使用launchd它可以很容易地解决你的问题。

man launchd.plist

StartCalendarInterval <dictionary of integers or array of dictionaries of integers>

This optional key causes the job to be started every calendar interval as specified. 
Missing arguments are considered to be wildcard. The semantics are similar to crontab(5)
in how firing dates are specified. Multiple dictionaries may be specified in an array
to schedule multiple calendar intervals.

Unlike cron which skips job invocations when the computer is asleep, launchd will start
the job the next time the computer wakes up.  If multiple intervals transpire before the
computer is woken, those events will be coalesced into one event upon wake from sleep.

这个答案StackOverflow 上有一个launchd.plist简单 cronjobs 的基本模板。

相关内容