Что такое крон и как c ним работать?

MSE-Script

Developer
Команда форума
Сообщения
863
Реакции
309
Cron (или планировщик) - это используемая в UNIX-системах программа, которая играет важную роль в работе сайтов. Она используется для автоматического выполнения действий на сервере или другими словами, выполнения указанной команды или запуска нужного файл в указанное время. Отсюда его и прозвали планировщиком. CRON автоматически запускается при старте сервера и ежеминутно проверяет список своих задач.

Настройка сron-задач проста и с ней справится любой вебмастер. Для начала нужно понять принцип действия. Задача состоит из 2-х частей: времени запуска задачи и самой команды.

Разберем задачу более детально:
Bash:
1 2 3 4 5 command arg1 arg2
1 2 3 4 5 - время запуска задачи в особенном формате, command - Ваша команда, arg1 arg2 - дополнительные аргументы.

Формат времени для задачи:
Bash:
1 2 3 4 5 command arg1 arg2
| | | | |    
| | | |  -- # Порядковый номер дня недели (0-7)
| | |  ---- # Порядковый номер месяца (0-12)
| |  ------ # Порядковый номер дня (0-31)
|  -------- # Час (0-59)
---------- # Минута (0-59)
Вместо цифр может использоваться символ *, означающий “любое значение”, которое используется, если Вам не требуется привязка к какому-то определенному значению. То есть, если вместо конкретного часа Вы укажете *, задача будет выполняться каждый час. Так же, во времени можно использовать дополнительный символ /, означающий шаг.

5 - 5 минута часа/5 час суток/5 день месяца и т.д.
*/5 - раз в 5 минут/раз в 5 часов/раз в 5 дней и т.д..
*/5 * * * * - раз в 5 минут любого часа, дня, месяца (16:05, 16:10, 16:15 … 17:20).
10 */5 * * * - каждые 5 часов раз в 10 минут (5:10, 10:10, 15:10)
40 12 * * * - каждый день в 12:40

Если Вы используете панели типа vesta/ISP, то запоминать эти значения не обязательно, так как в этих панелях используется удобный конструктор значений. Перед добавлением задачи, рекомендую выполнить нужную команду на сервере напрямую в консоли. Это позволит проверить корректность составления команды и выявить возможные проблемы в ее работе. Например, если Вы опечатались или указали некорректный путь к файлу. При выполнении команды напрямую, Вы получите ошибку и исправите ее (при ее наличии), а при добавлении задачи без проверки, можете даже и не узнать о каких-то проблемах.

Как добавить Cron-задачу в панели Vesta?

1. Перейдите в соответствующий раздел панели и нажмите кнопку “добавить задачу”:


Раздел CRON панели VESTA

2. Введите нужную команду в поле Команда.
3. Укажите нужное время запуска в специальном конструкторе.
4. Нажмите кнопку Генерировать, конструктор создаст время запуска в нужном формате и автоматически заполнит необходимые поля. Конструктор создан для удобства, настроить время запуска в ручную Вы можете по схеме, указанной выше.
5. Нажмите кнопку Добавить.


Окно добавление cron-задачи в VESTA

Готово! Результатом работы станет успешно добавленная CRON-задача. Обратите внимание, что планировщик будет автоматически отсылать письма на почту с отчетом о выполнении команды. Чтобы отключить эту функцию, добавьте в конце команды > /dev/null &2>&1.


Как добавить Cron-задачу в панели ISP?

1. Перейдите в раздел Планировщик и нажмите кнопку Создать:


Раздел Планировщик панели ISP

2. Введите в поле Команда нужную команду. При желании заполните необязательное поле Описание. Данное поле носит информативный характер.
3. Настройте время запуска в конструкторе. Для ручной настройки времени переключите редактор в экспертный режим.
4. Нажмите кнопку Ок.


Окно добавление cron-задачи в ISP



Как добавить cron-задачу на сервер без панели?

Еще одним способом добавления задачи является правка конфигурационного файла напрямую.

1.Подключитесь к серверу по SSH.
2. Введите команду crontab -e. Перед вами откроется текстовый редактор со списком всех задач:

1582402524430.png
Список задач в конфиге cron

3. Введите время запуска и команду на новой строке и сохраните файл. Не забудьте добавить > /dev/null 2>&1 после команды, чтобы отключить автоматическую отправку письма с отчетом.
4. Сохраните файл конфигурации.


Как запустить php-файл через cron?

Запустить php файл можно несколькими способами. Самым простым способом будет выполнении команды:
Bash:
php -f ~/путь_к_вашему_файлу/file.php
На некоторых хостингах команда php может не работать из-за ненастроенных путей. Решением проблемы будет принудительное указание пути к интерпретатору:
Bash:
/usr/bin/php -f ~/путь_к_вашему_файлу/file.php
Некоторые хостинги позволяют выполнить команду с разными версиями php:
Bash:
/opt/php56/bin/php -f ~/путь_к_вашему_файлу/file.php
/opt/php71/bin/php -f ~/путь_к_вашему_файлу/file.php
Обратите внимание, что версия php в терминале может отличаться от версии, используемой веб-сервером. Если Ваш скрипт требует php 7.1, а в терминале работает php 5.6, то скрипт работать не будет. Проверить версию php в терминале можно командой php --version.


Результат выполнения команды php --version

В большинстве случаев, команды php -f будет достаточно.
Еще одним способом запуска php файла будет выполнение запроса к веб-серверу:
Bash:
wget --spider https://domain.com/file.php
Данный способ подойдет при наличии проблем с запуском скрипта как консольного. Однако, лучше выполнять запуск первым способом, так как он более быстрый и менее ресурсоемкий.

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