Cron

Kate

Administrator
Команда форума

Работа с планировщиком CRON​

Планировщик заданий Cron - это один из компонентов операционной системы Linux. Он используется для запуска на хостинге определенных скриптов в нужное время, по расписанию.

Примеры таких заданий:

  • отправка e-mail с отчетом о работе сайта за сутки;
  • создание резервной копии сайта;
  • резервное копирование БД;
  • и так далее.

Настройка задач Cron через панели управления хостингом​

На виртуальном хостинге вы можете управлять задачами в Cron через специальный web-интерфейс.

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

Соответствующий раздел в панелях управления может называться “Cron”, “Crontab” или “Планировщик”. Например, так выглядит настройка Cron у провайдера Timeweb.

f07803c35aa783c518cab0909c4a7bc9.png


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

813fd1a42357e1553c0283bab2e7f8a7.jpg


b33c99c14c5068cd5d5edce294f6a33c.jpg


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

Аналогично средства управления задачами Cron встроены в популярные панели управления сервером ISPmanager и cPanel, которые можно установить на VPS/VDS или на выделенный сервер.

ISPmanager​

1. В ISPmanager задачи Cron создаются через раздел “Планировщик”.

9a53c5537dd80f81d81c0408e0b4d612.png


2. При формировании задачи можно использовать базовый режим с указанием времени исполнения задания в привычной людям форме.

c6695271e860ed0c2f2a4fdcdce1c8d9.jpg


3. Для опытных пользователей предназначен экспертный режим, когда настройки времени исполнения задания делаются так же, как и при редактировании команд Cron вручную.

О редактировании Cron через командную строку читайте ниже.

532de8c8c40449ecd7afe977690eb213.jpg


cPanel​

1. В cPanel работа с Cron осуществляется из раздела “Расширенный -> Задания cron”.

adf58de16fde4b8226ece53ce3969802.png


2. При редактировании задач в Cron вы можете настроить время исполнения задачи и указать название команды.

adc19540d4005aa047d4599632fe06c2.png


Некоторые провайдеры позволяют пользователям виртуального хостинга подключаться к серверу по протоколу SSH и получать доступ к командной строке.

В этом случае для управления задачами в Cron вручную вы можете использовать команду:

Такая же возможность есть и у владельцев VPS/VDS и выделенных серверов.

Редактирование Cron через командную строку​

Задания в Cron и их расписание описываются в виде текстового файла, состоящего из строк специального формата.

Любой пользователь VPS/VDS и выделенных серверов на Linux может самостоятельно добавить задание в Cron с помощью специальной команды сrontab.

При запуске crontab открывается редактор текстового файла с уже имеющимися задачами Cron.

Для новой задачи добавьте строку в этот файл и сохраните его.

> crontab -e
# На каждое рождество проиграть мелодию
0 0 25 12 * ogg123 $HOME/sounds/merryxmas.ogg
Каждый день очищать каталог временных файлов
0 3 * * rm /home/tmp/
Пример: редактирование заданий Cron с помощью команды crontab

Запускать задачи в Cron можно с точностью до одной минуты.

Если это необходимо, то задания, запускаемые из Cron, могут записывать отчет о своей работе в журнальные файлы (логи).

1. Чтобы включить запись логов в Cron:

измените

на

2. Добавьте строку:

3. Сделайте рестарт rsyslog:

/etc/init.d/rsyslog restart

Формат записей в Cron​

Задания, которые нужно выполнить, описываются в Cron с помощью строк определенного формата.

Каждая строка содержит информацию:

  • о расписании для запуска задания;
  • саму команду, которая его выполняет.
Под командой подразумевается название скрипта в файловой системе Linux.

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

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

1. Минуты (от 0 до 59).
2. Часы (от 0 до 23).
3. Дни месяца (от 1 до 31).
4. Месяц (от 1 до 12).
5. Дни недели (от 0 до 6, начиная с воскресенья).

Значения полей разделяются между собой пробелами. Также пробелы отделяют их от названия скрипта для запуска задания.

ac3354604f59e35f5c4d232e93a38a67.jpg


Если вместо цифр в каком-то из полей указывается символ звездочки “*”, то это означает подстановку всех возможных значений. Например, “*” в поле “день месяца” означает, что команда запускается каждый день.

В полях можно использовать символы:

  • запятые - для перечня значений;
  • тире - для обозначения промежутка.
Например, значение “5,10,19” в поле “часы” означает, что команда будет запускаться в 5 часов, в 10 часов и в 19 часов.

Значение “0-5” в поле “дни недели” означает, что команда будет запускаться каждый день, кроме субботы.

Существует возможность описать запуск команд через определенный промежуток времени. Для этого используется символ “/”. Например - “*/15” в поле “минуты” означает запуск команды каждые 15 минут.

30 08 * * * /home/admin/backup
Пример записи в Cron

Данная запись означает, что команда “/home/admin/backup” будет запускаться каждый день в 8 часов 30 минут.

Необходимо помнить, что время запуска команд привязано к установленному на сервере времени и часовому поясу. Используемый на сервере часовой пояс (timezone) можно выяснить у технической поддержки хостинга или с помощью команды date из командной строки сервера.

Нюансы и полезные советы при работе с Cron​

Команды, которые настраиваются через Cron, запускаются и работают на сервере провайдера от имени конкретного пользователя.

Если нужно, чтобы по расписанию открывалась некая страница сайта и исполнялся определенный скрипт, который привязан к ней, то необходимо обеспечить обращение к этой странице по протоколу HTTP (HTTPS) так же, как это происходит при использовании браузера.

Для этой цели на всех серверах хостинга в комплекте программного обеспечения имеется специальная утилита wget, которая умеет обращаться к страницам сайтов по протоколам HTTP и HTTPS. Например, для того, чтобы запускать раз в сутки в три часа ночи запрос по протоколу HTTP-страницы, расположенной по адресу , нужно прописать в CRON следующее:

Другой распространенный вопрос связан с использованием интерпретатора языка программирования PHP для запуска скриптов. Предположим, что скрипты, предназначенные для запуска через Cron, уже готовы и расположены внутри каталога с сайтом в папке scripts.

Уточните у технической поддержки хостинга полный путь, по которому располагается на сервере хостинга бинарный файл интерпретатора PHP. Обычно этот путь имеет вид, наподобие /usr/bin/php или /usr/local/bin/php.

Также выясните полный путь к корневому каталогу сайта. Эта информацию можно узнать в панели управления хостингом или у технической поддержки. Допустим, полный путь выглядит как “/home/user/www/mysite.ru/”.

Теперь, имея всю необходимую информацию о расположении файлов и папок, можно настроить запуск скрипта “myscript.php” cron в виде такой строки.

0 3 * * * /usr/bin/php /home/user/www/mysite.ru/scripts/myscript.php
Как правило, при работе скриптов через Cron любая выводимая ими информация считается важной и перенаправляется владельцу сайта на его электронную почту. Для того, чтобы запретить работающим через Cron скриптам выводить во время работы любые сообщения, следует добавить в конце строки специальный набор символов-операторов: “>/dev/null 2>&1”. Это выключает любые сообщения от скриптов, в том числе информацию об ошибках.

0 3 * * * /home/user/www/mysite.ru/scripts/myscript >/dev/null 2>&1
Пример настройки Cron с отключением вывода об ошибках

Выводы​

Планировщик Cron используется в операционной системе Linux для управления выполнением задач по расписанию.

Для пользователей виртуального хостинга провайдеры предлагают удобный способ настройки выполнения заданий по расписанию через удобный web-интерфейс. Также подобный функционал имеется в панелях управления сервером - ISPManager или cPanel.

Для владельцев виртуальных и выделенных серверов доступна возможность настраивать записи Cron вручную из командной строки сервера с помощью команды crontab.

Источник статьи: https://ru.hostings.info/schools/cron.html
 
Сверху