Планирование скриптов с помощью Cron

Введение в Bash-скриптинг

Alex Scriven

Data Scientist

Зачем планировать скрипты?

 

Планирование скриптов бывает полезно во многих случаях:

  1. Регулярные задачи — ежедневные, еженедельные или несколько раз в день.
    • Можно поставить напоминание в календаре, но что если забудете!?
  2. Оптимальное использование ресурсов (запуск скриптов ранним утром)

Планирование скриптов с помощью cron — необходимый навык для работы с современной инфраструктурой данных.

Введение в Bash-скриптинг

Что такое cron?

 

Cron входит в состав Unix-подобных систем с 70-х годов. Люди давно ценят автоматизацию!

Название происходит от греческого слова «время» — chronos.

Работа cron управляется файлом crontab, который содержит cronjobs — записи, определяющие, какой код запускать и когда.

Введение в Bash-скриптинг

Crontab — основа cronjob

 

Посмотреть текущие расписания (cronjobs) можно с помощью следующей команды:

crontab -l
crontab: no crontab for user

Значит, нам нужно создать расписание (cronjob)!

Введение в Bash-скриптинг

Структура crontab и cronjob

Эта иллюстрация из Wikipedia показывает структуру записи cronjob в файле crontab. Записей может быть несколько — по одной в каждой строке.

Структура crontab

  • Задаётся 5 звёздочек — по одной для каждой единицы времени
  • Значение по умолчанию * означает «каждый»
Введение в Bash-скриптинг

Пример cronjob

Разберём несколько примеров cronjob:

5 1 * * * bash myscript.sh

  • Минуты: 5 (5 минут после начала часа). Часы: 1 (после 1:00). Остальные три — *, то есть каждый день и каждый месяц.
    • Итого: запуск каждый день в 1:05.

 

15 14 * * 7 bash myscript.sh

  • Минуты: 15. Часы: 14 (после 14:00). Следующие два — * (каждый день месяца, каждый месяц). Последняя звёздочка: день 7 (воскресенье).
    • Итого: запуск каждое воскресенье в 14:15.
Введение в Bash-скриптинг

Расширенная структура cronjob

Можно также запускать задачи несколько раз в день или через каждые X единиц времени:

  • Запятая задаёт конкретные моменты. Например:
    • 15,30,45 * * * * запустится на 15-й, 30-й и 45-й минуте каждого часа, каждого дня и т. д.
  • Слэш задаёт интервал «каждые X». Например:
    • */15 * * * * запускается каждые 15 минут, каждый час, каждый день и т. д.
Введение в Bash-скриптинг

Ваш первый cronjob

Запланируем запуск скрипта extract_data.sh каждое утро в 1:30. Порядок действий:

  1. В терминале введите crontab -e, чтобы открыть список cronjob для редактирования.
    • Система может спросить, какой редактор использовать. nano — простой вариант с пологой кривой обучения по сравнению с vi (vim).
  2. Создайте cronjob:
    • 30 1 * * * extract_data.sh
Введение в Bash-скриптинг

Ваш первый cron job

3. Выйдите из редактора, чтобы сохранить изменения.

Если вы использовали nano (на Mac): нажмите ctrl + o, затем enter, затем ctrl + x для выхода.

Появится сообщение crontab: installing new crontab

4. Проверьте результат командой crontab -l.

30 1 * * * extract_data.sh

Отлично!

Введение в Bash-скриптинг

Давайте потренируемся!

Введение в Bash-скриптинг

Preparing Video For Download...