CronJob — автоматическое выполнение важных задач

Первый ответ на вопрос «Что такое CronJob?» — это «демон». Второй ответ: бог. Запутались? Эти ответы относятся только к этимологии названия. Строго говоря, Cron действительно означает «команда, выполняемая по уведомлению». Однако аббревиатура также намекает на Хроноса, древнегреческого бога времени. В операционных системах, таких как Linux или macOS, команда выполняется как демон cron (также называемый системой cron). Вот и все.

Аллюзия на греческого бога времени, кстати, является отличной мнемоникой для запоминания назначения CronJob. Система cron работает в фоновом режиме операционной системы и может автоматически выполнять задачи (задания) в заданное время. Таким образом, если сложить вместе cron-систему и другое название фиксированной задачи, получится термин CronJob.

Что такое CronJob?

CronJob — это задание, которое выполняется автоматически в операционных системах. Система регулярно выдает команды для этих заданий. Это может быть одно задание, но обычно это несколько сложных заданий, т.е. несколько CronJobs. Преимущество CronJobs в том, что они могут быть очень индивидуализированы.

Каждый CronJob состоит из трех компонентов:

  • Сценарий, который должен быть выполнен
  • Команда, которая будет выполнять скрипт на регулярной основе
  • Действие или результат выполнения скрипта.

Практическими примерами его использования являются повторяющиеся серверные задачи. Среди прочего, рассылка новостей, статистические опросы или очистка баз данных автоматически инициируются CronJobs.

Все операционные системы, в которых есть система cron или демон cron, могут использовать CronJobs. Сюда входят все Unix и BSD (Berkeley Software Distribution) системы, такие как macOS или Linux.

Операционные системы могут заставить CronJobs выполняться в соответствии с их девизом «Команда выполняется по уведомлению» через заданные интервалы времени. Таким образом, рутинные задачи могут выполняться совершенно независимо от дополнительного ввода данных пользователем. Помимо операционной системы с демоном cron, для настройки CronJobs необходимо наличие следующих предварительных условий:

  • выделенный сервер
  • защищенная оболочка (SSH) или клиент Telnet
  • FTP-клиент для передачи файлов или загрузки файлов cron.
Примечание

Существуют специальные пользовательские интерфейсы для простой настройки CronJobs, а также пакеты веб-хостинга, которые предоставляют предварительно настроенные CronJobs для веб-проектов. Для веб-хостинга с CronJobs мы рекомендуем посмотреть нашу статью Помощь по Cronjob.

Какие задачи может выполнять CronJobs?

Вероятно, самым распространенным применением CronJobs является резервное копирование данных. Например, если вы хотите создавать резервную копию с помощью tar через регулярные промежутки времени для архивирования данных, CronJobs идеально подойдет. Очистка баз данных и обработка статистики посещений на веб-сайтах также входят в число типичных применений CronJobs.

CronJobs может взаимодействовать с системой управления контентом для автоматической рассылки информационных бюллетеней или проверки уровня запасов в интернет-магазинах. Вы отслеживаете нагрузку на сервер и можете автоматически корректировать новую информацию в описании товара, например, среднюю оценку пользователя.

Примечание

Автоматизированные задачи CronJobs настолько разнообразны, что их следует использовать с осторожностью, поскольку они требуют много ресурсов. Поэтому важно подумать, действительно ли имеет смысл использовать CronJob и когда его устанавливать. Подходящие PHP-скрипты обеспечивают запуск CronJobs только тогда, когда они не мешают другим процессам.

Кратко о наиболее важных задачах

  • Очистка баз данных: Удаляются устаревшие записи; сюда входят устаревшие комментарии или записи о входе в систему, которые уже неактуальны.
  • Создание статистики: CronJobs может, например, ежедневно обновлять данные о просмотрах страниц сайта.
  • Обновление RSS-канала: XML-файл может регулярно обновляться с помощью CronJob.
  • Планирование и публикация нового контента
  • Информационные бюллетени: Электронные письма могут быть отправлены в течение определенного периода времени.
  • Генерирование счетов-фактур: Счета-фактуры могут генерироваться и отправляться независимо друг от друга — пакетно и через фиксированные промежутки времени.
  • Резервное копирование баз данных: В основном это относится к небольшим базам данных, размер которых не превышает 20 МБ.
  • Машинное обучение: Через CronJob искусственный интеллект может получать новые записи данных в определенное время.
  • Обновления: Обновления программного обеспечения могут быть предоставлены в определенное время.

Как выглядит обычная команда CronJob?

Возможность индивидуализации — одно из главных преимуществ CronJob. Для настройки CronJob существует базовый набор из трех переменных, которые могут быть выполнены в любое время:

  1. PATH: указывает путь поиска команд или сценария.
  2. SHELL: направляет командный интерпретатор на выполнение скрипта.
  3. MAILTO: показывает пользователей, которым следует передать результаты CronJob; по умолчанию это подписчик.

Пользователи могут сами определять CronJobs с помощью этих трех переменных и любого количества других переменных. Обычно для команд используются сценарии SHELL, PHP и PERL.

Примечание .

Вы можете получить больше информации о командах в Linux и Co. в нашей базовой статье о командах Linux.

Как работает CronJob?

Чтобы CronJob выполнил свою работу, необходимо заранее отдать команду. Затем демон cron работает в фоновом режиме и выполняет неинтерактивные задания. Кстати, в Windows эта функция известна как «службы».

CronJobs в основном простаивают и ждут команды, либо непосредственно в операционной системе, либо от другого компьютера в сети. Команда подается через cron-файл (простой текстовый файл), который задает задание на определенное время.

CronJobs определяются и настраиваются в таблице, также известной как crontab. В ней указаны время и последовательность команд, которые должны быть выполнены.

Примечание

Программа, используемая для редактирования отдельных кронтабов, также называется «Crontab».

Системный файл crontab «crontab» по умолчанию находится в каталоге crontab /etc/cron.*/.

Четыре коротких примера CronJob

Кронтабы можно редактировать с помощью программы crontab. Для этого требуется следующая команда:

crontab -e

Синтаксис программы довольно прост. Каждый cronjob имеет следующий формат:

*     *     *     *     * Command to be executed
-      -      -      -     -
|     |     |     |     |
|     |     |     |     +----- Weekday (0 - 7) (Sunday is 0 and 7)
|     |     |     +------- Month(1 - 12)
|     |     +--------- Day (1 - 31)
|     +----------- Hour (0 - 23)
+------------- Minute (0 - 59)

Звездочка * означает, что CronJob всегда должен выполняться в соответствующий день, месяц, час или минуту. Для дней недели и месяцев можно использовать первые три буквы, например, ‘sun’ для воскресенья. Информация о точных временных периодах не может быть предоставлена с помощью этой формы обозначений.

Для получения более точной информации о периодах времени звездочка заменяется цифрами. Если вы установите первую цифру 8-10, команда будет выполнена на 8-й, 9-й и 10-й минуте. Если вы установите */2, команда будет выполняться каждую вторую минуту. Оба значения можно комбинировать. Всего для первых пяти цифр возможны три значения времени:

  • * = выполнение всегда (при каждом задании)
  • */n = выполнение каждые n (временной интервал)
  • n,x,y = выполнение в/на n,x,y

Пример 1: Резервное копирование с помощью CronJob

Чтобы запускать резервное копирование каждое утро в 6 утра, вам нужна следующая команда:

0 6 * * * /usr/bin/backup.sh

Пример 2: Звук будильника

CronJobs можно также использовать для воспроизведения звука через регулярные промежутки времени:

*/30 * * * * /usr/bin/play_sound.sh

Пример 3: Напоминания

Напоминания по электронной почте в 8 утра и 6 вечера отправляются следующим cronjob:

0 8,18 * * * /usr/bin/send_reminder_mail.sh

Пример 4: Спасибо, администраторы!

Или вы можете использовать CronJobs, чтобы больше никогда не забывать о дне системного администратора:

0 0 30 07 * (echo “Message body”|mail -s “Message Subject.” user@domain.xy)

Оцените статью
cdelat.ru
Добавить комментарий