Задания 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 дней.