如何安排脚本即使 Mac 处于睡眠状态也自动运行?

如何安排脚本即使 Mac 处于睡眠状态也自动运行?

我对此确实很苦恼。

基本上,我希望每 3 小时在我的 Mac 上运行一次 Python 脚本。即使我不在使用 Mac。因此,即使 Mac 处于睡眠状态,我也希望它能够被唤醒并运行脚本。

我的攻击方法如下:

  1. 我下载了一个名为“scenario”的第三方应用程序,它会在 Mac 唤醒时运行脚本。

  2. 我已经在场景中放置了一个将调用 Python 文件的 Apple 脚本。

  3. Python 文件运行我需要它运行的几个命令,然后设置pmset wake up call当前时间后 3 小时的计划。

现在整个系统很笨重,而且是拼凑起来的。说实话,它工作得不太好,因为当我自己唤醒笔记本电脑时,代码就会执行,从而打乱计划。

一定有更好的方法。有人知道我可以在哪里找到/谁可以帮助我吗?

我已经查看过launchd,但我不认为当笔记本电脑处于睡眠状态时会运行命令。

我目前的方法可以让笔记本电脑唤醒并在唤醒时执行代码,但我该如何解决上述问题呢?

答案1

我认为使用它pmset来安排起床时间是个好主意。我认为还有其他一些工具(Caffeine?)可以帮助安排起床或睡眠时间,但我还是会坚持使用 pmset。

只需在 AppleScript 或 Python 脚本中添加一个条件来检查脚本上次运行的时间(基于日志条目或“触摸”文件),如果距离上次运行时间少于 3 小时,则退出脚本。

如果您在 3 小时之前唤醒 Mac,则需要一种方法来重置下一个脚本运行时间。但是,当您连续使用 Mac 超过 3 小时时,您必须已经解决了这个问题。

因此,我会将 Scenario 与 cron 结合起来运行相同的脚本,可能每分钟一次。相同的规则:脚本检查上次运行时间,如果运行时间太早则退出。所以现在有两种方法可以触发脚本:

  1. Mac 已睡眠 3 小时,pmset 将其唤醒
  2. Mac 已处于睡眠状态,您在 3 小时前将其唤醒
  3. Mac 醒了,距离上次检查已经过去了一分钟

在场景 1 中,您的脚本完全运行。在场景 2 中,它会检查并退出。在场景 3 中,它会检查并可能退出(太早)或完全运行。

相关内容