Задания Cron отлично подходят для планирования периодического запуска скриптов. Их можно использовать для отправки ежедневной электронной почты, напоминаний о необходимости вынести мусор или выполнения повседневных домашних дел, таких как удаление временных файлов. Мне нужно было запустить собственный скрипт Django-admin для обновления моделей в моем приложении. Вот как я это сделал.

Во-первых, в Руководстве разработчика Apple описаны два метода, предусматривающие выполнение фоновых задач по расписанию. Запустили и кронтаб. Я бы порекомендовал прочитать документацию, чтобы получить более глубокое представление о launchd и почему он предпочтительнее. Я предпочитаю использовать Crontab, так как это самый простой вариант.

Реализация crontab в OS X 10.10 имеет всего несколько параметров:

  • Кронтаб -л. Список всех активных заданий cron.
  • Кронтаб -р. Удаляет все активные задания cron.
  • Кронтаб -е. Открывает файл crontab для редактирования.
  • Crontab -u [пользователь]. Назначает задание cron конкретному пользователю.

В терминале вы можете проверить, существуют ли какие-либо задания cron, введя crontab -l. Неважно, в каком каталоге вы сейчас находитесь. Чтобы создать задание cron, просто введите crontab -e, и crontab откроется в редакторе командной строки. В моем случае это Вим. Если вы не знакомы с Vim, ознакомьтесь с этой шпаргалкой.

Ниже я перечислил две строки в моем crontab. В этом примере задания запускаются в 8:11 и 8:13 каждое утро. * * * обозначают день, месяц и день недели соответственно. Конкретные инструкции по установке времени читайте в Википедии. За командой запуска следует ввод времени/частоты.

Итак, как узнать, завершена ли работа? В моем скрипте есть оператор «print», чтобы указать, была ли модель обновлена. Когда задание cron выполняется, вывод на печать автоматически направляется в сообщение и отправляется в файл с этим путем /var/mail/'username'. При поступлении нового сообщения вы будете уведомлены при открытии терминала или после нажатия Enter в командной строке.

Чтобы прочитать сообщение, используйте «cat», за которым следует путь к файлу сообщения. Вот мое последнее сообщение. Тело сообщения содержит то, что обычно распечатывается в интерфейсе командной строки или в интерпретаторе Python.

Если вы не удалите файл сообщений, сообщения будут накапливаться. Если вы хотите хранить этот файл только в течение 30 дней, просто создайте задание cron для удаления файла сообщения каждые 30 дней.