crontab从睡眠中唤醒osx


18

我有一个crontab,它将在清晨(入睡后)启动某个程序,并在清晨(醒来之前)再次关闭该程序。但是我的iMac睡眠时不会执行crontab脚本。

我看到有一些首选项可以唤醒计算机并使其在指定的时间再次进入睡眠状态,但是有没有办法使用crontab做到这一点?

Answers:


28

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

值得一提的是,自从Tiger以来,Apple已将大多数计划作业cron和脚本init.rc移到了launchd流程中。它提供了更详细的控制方法(但我觉得很麻烦)(通过几个plist文件)。它还会自动运行丢失的任务,因为计算机在唤醒时处于睡眠状态。看一下Apple的“ 定时作业”页面。


链接断开。

1
很好的答案,但是关闭笔记本电脑后能否将其唤醒?
用户

4

安排从睡眠中唤醒的另一种方法是使用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



2

您可能需要研究Anacron

即使计算机(例如笔记本电脑)将大部分时间都花在睡眠或关闭电源上,Anacron也会在Mac上运行每日,每周和每月的定期任务。Anacron会在计算机运行时每60分钟静默检查您重新启动的时间,以查看各种定期脚本是否过期,并在必要时运行它们。Anacron相对于此问题的许多其他解决方案的优点在于,它可以作为Unix适当的后台进程运行,不需要用户干预,并且使用常规的定期脚本。

另一个可以解决问题的应用程序是唤醒


1

OSX处于睡眠模式时,cron无法运行。

您可能想要研究cronwake(我相信该网站是日语,必须通过google翻译运行)和anacron,或者您可以使用该Energy Saver应用程序安排唤醒时间来运行脚本,然后将其重新休眠。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.