Планування скриптів із Cron

Вступ до Bash Scripting

Alex Scriven

Data Scientist

Навіщо планувати скрипти?

 

Є багато ситуацій, коли корисно планувати запуск скриптів:

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

Планування скриптів за допомогою cron — обов'язкова навичка для роботи з сучасною дата-інфраструктурою.

Вступ до Bash Scripting

Що таке cron?

 

Cron існує в системах, подібних до Unix, із 70-х. Люди лінуються вже стільки часу!

Назва походить від грецького слова «час» — chronos.

Його керує так званий crontab — файл із cronjobs, де кожне вказує, що і коли запускати.

Вступ до Bash Scripting

Crontab — рушій cronjob-ів

 

Подивіться, які розклади (cronjobs) уже запрограмовано, такою командою:

crontab -l
crontab: no crontab for user

Отже, нам треба створити розклад (cronjob)!

Вступ до Bash Scripting

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

Це чудове зображення з Вікіпедії показує, як створити cronjob у файлі crontab. Ви можете мати багато cronjobs, по одному на рядок.

Структура crontab

  • Є 5 зірочок — по одній для кожної одиниці часу
  • Значення за замовчуванням, *, означає «кожну/кожен»
Вступ до Bash Scripting

Приклад cronjob

Розгляньмо кілька прикладів cronjob:

5 1 * * * bash myscript.sh

  • Зірочка хвилин — 5 (5-та хвилина після години). Зірочка годин — 1 (після 1-ї ночі). Останні три — *, тобто щодня і щомісяця.
    • Підсумок: запуск щодня о 1:05.

 

15 14 * * 7 bash myscript.sh

  • Хвилини — 15 (15-та хвилина). Години — 14 (після 14-ї, тобто 2:00 по обіді). Далі дві * (щодня місяця, щомісяця року). Останній — день 7 (неділя).
    • Підсумок: запуск щонеділі о 14:15.
Вступ до Bash Scripting

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

Якщо потрібно запускати щось кілька разів на день або кожні «X» інтервалів — це теж можливо:

  • Кома — для конкретних позначок часу. Наприклад:
    • 15,30,45 * * * * запустить на 15-й, 30-й і 45-й хвилинах кожної години, заданої другою зірочкою. Тут — щогодини, щодня тощо.
  • Скісна риска — для «кожні X». Наприклад:
    • */15 * * * * запускає кожні 15 хвилин. Так само — щогодини, щодня тощо.
Вступ до Bash Scripting

Ваш перший cronjob

Сплануймо скрипт extract_data.sh на щоденний запуск о 1:30 ночі. Кроки:

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

Ваш перший cron job

3. Вийдіть з редактора, щоб зберегти

У nano (на Mac) натисніть ctrl + o, потім enter, далі ctrl + x для виходу.

Побачите повідомлення crontab: installing new crontab

4. Перевірте наявність командою crontab -l.

30 1 * * * extract_data.sh

Чудова робота!

Вступ до Bash Scripting

Давайте потренуємось!

Вступ до Bash Scripting

Preparing Video For Download...