crontab 唤醒睡眠中的 osx

crontab 唤醒睡眠中的 osx

我有一个 crontab,它会在清晨(我睡觉后)启动某个程序,并在早上晚些时候(我醒来前)再次关闭它。但我的 iMac 在睡眠时不会执行 crontab 脚本。

我看到有一些偏好设置可以唤醒机器并在指定的时间让其再次睡眠,但是有没有办法使用 crontab 来做到这一点?

答案1

cron在计算机睡眠时不会执行,因此您无法通过 crontab 条目唤醒计算机。也就是说,您可以在“首选项”>>“节能器”>>“计划”中安排计算机在 cron 任务执行前一两分钟唤醒。

值得一提的是,自 Tiger 以来,Apple 已将大多数计划任务cron和脚本移至init.rclaunchd进程。它提供了更详细(但我认为很麻烦)的控制方式(通过几个 plist 文件)。它还将自动运行因计算机在唤醒时处于睡眠状态而错过的任务。看看 Apple 的调度定时作业页。

答案2

安排从睡眠状态唤醒的另一种方法是使用 pmset:

sudo pmset repeat wakeorpoweron MTWRFSU 03:45:00

launchd 无法唤醒处于睡眠状态的计算机,但它会在唤醒后运行在睡眠期间安排的作业。如果其他人搜索如何执行此操作,您可以例如将此 plist 保存为~/Library/LaunchAgents/some.label.plist

<?xml version="1.0" encoding="UTF-8"?>
<!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>some.label</string>
  <key>ProgramArguments</key>
  <array>
    <string>say</string>
    <string>a</string>
  </array>
  <key>StartCalendarInterval</key>
  <dict>
    <key>Hour</key>
    <integer>23</integer>
    <key>Minute</key>
    <integer>59</integer>
  </dict>
</dict>
</plist>

然后运行launchctl load ~/Library/LaunchAgents/some.label.plist

答案3

您可以在节能器偏好设置面板中安排 Macintosh 的唤醒时间。请参阅“安排”按钮。

答案4

当 OSX 处于睡眠模式时,cron 将不会运行。

您可能需要查看克朗韦克(必须通过谷歌翻译,因为我相信该网站是日语的)和阿纳克隆,或者您也可以使用该Energy Saver应用程序来安排唤醒时间来运行脚本,然后将其重新置于睡眠状态。

相关内容