我有一个 crontab,它会在清晨(我睡觉后)启动某个程序,并在早上晚些时候(我醒来前)再次关闭它。但我的 iMac 在睡眠时不会执行 crontab 脚本。
我看到有一些偏好设置可以唤醒机器并在指定的时间让其再次睡眠,但是有没有办法使用 crontab 来做到这一点?
答案1
cron
在计算机睡眠时不会执行,因此您无法通过 crontab 条目唤醒计算机。也就是说,您可以在“首选项”>>“节能器”>>“计划”中安排计算机在 cron 任务执行前一两分钟唤醒。
值得一提的是,自 Tiger 以来,Apple 已将大多数计划任务cron
和脚本移至init.rc
该launchd
进程。它提供了更详细(但我认为很麻烦)的控制方式(通过几个 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 的唤醒时间。请参阅“安排”按钮。