Nip*_*rus 29 script cron macos
我有一个 crontab,它将在清晨(在我入睡后)启动某个程序,并在早上晚些时候(在我醒来之前)再次关闭它。但是我的 iMac 在睡眠时不会执行 crontab 脚本。
我看到有一些偏好可以唤醒机器并使其在指定时间再次休眠,但是有没有办法使用 crontab 来做到这一点?
jtb*_*jtb 42
cron在计算机休眠时不会执行,因此您无法使用 crontab 条目来唤醒计算机。也就是说,您可以在 Preferences >> Energy Saver >> Schedule 中安排计算机在执行 cron 任务前一两分钟唤醒。
还值得指出的是,自 Tiger 以来,Apple 已将大部分预定作业cron和脚本之类的工作init.rc转移到launchd流程中。它提供了更详细(但我认为很麻烦)的控制方式(通过几个 plist 文件)。它还会自动运行由于计算机在唤醒时处于睡眠状态而错过的任务。看看 Apple 的Scheduling Timed Jobs页面。
另一种安排从睡眠中醒来的方法是使用 pmset:
sudo pmset repeat wakeorpoweron MTWRFSU 03:45:00
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
然后运行launchctl load ~/Library/LaunchAgents/some.label.plist。