Планирование синхронизированных заданий

В 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 никогда не будет выполняться.