Cron — це утиліта командного рядка, яка планує та виконує повторювані завдання, відомі як cron jobs, у заданий час. Оскільки Cron інтегрований у системи Linux та Unix, додаткове програмне забезпечення встановлювати не потрібно. Завдання cron зазвичай визначаються в файлі, який називається crontab, що є скороченням від "Cron Table" (Таблиця Cron). Синтаксис crontab складається з п’яти полів, представлених числами, розділеними пробілами, які вказують на розклад завдання, після чого йде команда або скрипт для виконання.
Що ми розглянемо
- Що таке Cron Jobs?
- Основи синтаксису Cron
- Введення в crontab
- Налаштування Cron Jobs у Rails
- Практичні приклади та демонстрація
Основи Cron Jobs
- Що таке Cron Jobs?
- Визначення: Автоматизовані завдання, що виконуються у заданий час або інтервал.
- Використання: Резервні копії, надсилання електронних листів, оновлення даних.
- Терміни Cron
- Crontab: Конфігураційний файл для cron jobs.
Розуміння синтаксису Cron
- Формат часу Cron
* * * * *
| | | | |
| | | | +---- День тижня (0 - 6) (Неділя = 0)
| | | +------ Місяць (1 - 12)
| | +-------- День місяця (1 - 31)
| +---------- Година (0 - 23)
+------------ Хвилина (0 - 59)
- Приклади
0 5 * * *
— Виконується о 5 ранку кожного дня.*/15 * * * *
— Виконується кожні 15 хвилин.- Спеціальні ключові слова
@reboot
,@hourly
,@daily
,@weekly
,@monthly
,@yearly
Керування Cron Jobs за допомогою Crontab
- Основні команди
crontab -e
: Редагувати cron jobs.crontab -l
: Переглянути всі cron jobs.crontab -r
: Видалити всі cron jobs.- Приклади Crontab
- Планування скриптів.
- Направлення виведення в логи.
Інтеграція Cron Jobs у Rails
- Виклики у Rails
- Rails не має вбудованої підтримки для планування cron jobs.
- Для інтеграції використовуються бібліотеки або гемів.
- Популярні геми для планування cron
- Whenever: Ruby гем для керування cron jobs.
- Sidekiq або Resque (для фонових завдань, якщо cron jobs їх викликають).
Налаштування Cron Jobs за допомогою гему Whenever
- Інсталяція
gem install whenever
- Додайте його до вашого
Gemfile
:
gem 'whenever', require: false
- Ініціалізація
- Створення файлу
config/schedule.rb
.
wheneverize .
- Приклад планування
every 1.day, at: '4:30 am' do
runner "MyModel.some_method"
end
every :hour do
rake "some:task"
end
- Оновлення Crontab
whenever --update-crontab
Висновок
- Cron jobs — це потужний інструмент для автоматизації завдань, і з такими інструментами, як гем
whenever
, їх інтеграція в Rails додаток є досить простою. Дотримуючись найкращих практик та використовуючи гнучкість cron, ви можете ефективно вирішувати складні завдання з планування.
Додатково - основні моменти
- MacOS: Ви можете використовувати
crontab
або створювати файли.plist
дляlaunchd
. - Windows: Використовуйте Планувальник завдань (GUI) або
schtasks
через командний рядок
Перекладено з: Mastering Cron Jobs and Rails Scheduling