Планирование синхронизированных заданий
В OS X можно выполнить фоновое задание в синхронизированном расписании двумя способами: launchd
задания и cron
задания. (Более старые подходы, такой как at
задания и periodic
задания осуждаются и не должны использоваться.) Этот раздел объясняет эти методы кратко и обеспечивает ссылки к страницам руководства, предоставляющим дополнительную подробную информацию.
Синхронизированные Задания Используя launchd
Предпочтительный способ добавить синхронизированное задание состоит в том, чтобы использовать launchd
. Каждый launchd
задание описано отдельным файлом. Это означает, что можно управлять launchd
синхронизированные задания путем простого добавления или удаления файла.
Создать a launchd
синхронизированное задание, необходимо создать файл списка свойств конфигурации, подобный описанным в Создании launchd Файла Списка свойств за исключением того, что Вы указываете a StartCalendarInterval
ключ, содержащий словарь временных стоимостей.
Например, следующий список свойств выполняет программу happybirthday
в полночь каждый раз 11 июля падает в воскресенье.
<?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>com.example.happybirthday</string> |
<key>ProgramArguments</key> |
<array> |
<string>happybirthday</string> |
</array> |
<key>StartCalendarInterval</key> |
<dict> |
<key>Day</key> |
<integer>11</integer> |
<key>Hour</key> |
<integer>0</integer> |
<key>Minute</key> |
<integer>0</integer> |
<key>Month</key> |
<integer>7</integer> |
<key>Weekday</key> |
<integer>0</integer> |
</dict> |
</dict> |
</plist> |
Для получения дополнительной информации об этих значениях см. страницу руководства для launchd.plist
.
Синхронизированные Задания Используя крон
В масштабе всей системы cron
задания могут быть установлены путем изменения /etc/crontab
. В расчете на пользователя cron
задания могут быть установлены с помощью crontab
инструмент. Формат их crontab
файлы описаны в странице справочника для crontab
формат файла.
Поскольку установка cron
задания требуют изменения совместно используемого ресурса ( crontab
файл), Вы не должны программно добавлять a cron
задание.
Эффекты сна и выключения
Если система выключена или спит, cron
задания не выполняются; они не будут работать, пока следующий определяемый раз не происходит.
Если Вы расписание a launchd
задание путем установки StartCalendarInterval
ключ и компьютер спят, когда задание должно было работать, Ваше задание будет работать, когда просыпается компьютер. Однако, если машина выключена, когда задание должно было работать, задание не выполняется, пока следующий определяемый раз не происходит.
Все прочие launchd
когда компьютер выключен или спит, задания пропускаются; они не будут работать, пока следующий определяемый раз не происходит.
Следовательно, если компьютер всегда выключен в запланированное время задания, обоих cron
задания и launchd
задания никогда не работают. Например, если Вы всегда выключаете свой компьютер ночью, задание запланировало работать, в 1:00 никогда не будет выполняться.