Раздел помощи SpaceWeb
Поиск:     Расширенный поиск

Работа с crontab

Cron — планировщик задач в UNIX-подобных операционных системах, использующийся для выполнения заданий в соответствии с заданным временем. Crontab — файл, содержащий задания для cron. При помощи редактирования crontab можно настроить запуск определенного задания с необходимой периодичностью. В условиях виртуального хостинга редактирование crontab возможно только из раздела «Crontab» панели управления.

Оглавление статьи:

Создание задания

Для создания задания необходимо:

  1. зайти в раздел «Crontab»,
  2. нажать на кнопку «Добавить новое задание»,
  3. в открывшемся окне заполнить все поля формы,
  4. нажать на кнопку «Задать».

Синтаксис заданий

Задание в crontab состоит из двух частей и имеет следующий формат:
<Время выполнения задания> <Выполняемая команда>

Время выполнения задания

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

  • числом,
  • символом * (означает, что параметр принимает каждое значение из диапазона),
  • несколькими числами, раздёленными запятыми (например, 1,4,10),
  • диапазоном чисел (например, 1-10),
  • записью с использованием символов / и * (например, */3 означает, что параметр принимает каждое третье значение из диапазона).

Для каждого параметра определен диапазон допустимых числовых значений: минута — от 0 до 59, час — от 0 до 23, день — от 1 до 31, месяц — от 1 до 12, день недели — от 0 до 7 (0 и 7 означают воскресенье).
Примеры записи:

  • 0 5 * * * — выполнять ровно в 5 часов утра каждый день
  • 0 10,22 * 2,10 * — выполнять ровно в 10 и 22 часа каждый день в феврале и октябре
  • 0 19-21 * * 1-5 — выполнять ровно в 19, 20 и 21 час с понедельника по пятницу включительно
  • */15 * */2 * * — выполнять каждые 15 минут каждое четное число месяца

Выполняемая команда

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

1. Запуск собственных скриптов.

Для запуска скрипта необходимо указать абсолютные пути до интерпретатора (программы, которая выполнит скрипт) и до собственного скрипта, разделив эти пути пробелом. Пример записи:

/usr/bin/php /home/l/login/public_html/script.php

В указанном примере вначале указан абсолютный путь до интерпретатора PHP /usr/bin/php, а путь /home/l/login/public_html/script.php является абсолютным путём до собственного скрипта. При написании скрипта в нем также следует использовать только абсолютные пути (например, пути до подключаемых файлов или файлов, в которые скрипт будет сохранять результат своей работы). Различные интерпретаторы php на сервере:

/usr/bin/php5.6
/usr/bin/php5.5
/usr/bin/php5.4
/usr/bin/php5.3
/usr/bin/php (версия 5.2)

2. Запуск установленных на сервере программ.

Помимо использования программ-интерпретаторов разрешено использовать и любые другие программы, установленные на сервере и доступные для запуска пользователям. Обязательно следует указывать абсолютный путь до программы. 

Пример записи:

/usr/bin/wget -O /dev/null http://example.com/update.php

В примере с помощью программы wget будет запрошена страница update.php с сайта на домене example.com. Чтобы не сохранять файл на хостинге, добавлена подстрока -O /dev/null.

Определение пути до нужной программы

Узнать абсолютные пути к установленным на сервере и доступным для использования программам можно с помощью команды which. Например, если требуется узнать абсолютный путь до интерпретатора Perl, то следует выполнить в командной строке команду which perl:

swebuser@vh191 ~ $ which perl/usr/bin/perl

Уведомления на электронную почту

Существует возможность получать текстовый результат выполнения задания на электронную почту. Для этого в разделе «Crontab» следует задать нужный адрес с помощью формы «Электронный адрес для отправки результатов». Письма будут отправляться в том случае, если в результате выполнения задания формируется какой-либо текстовый вывод.

Зачастую, требуется отключить отправку уведомлений для одного задания cron, но оставить уведомления для другого. В этом случае, необходимо отключить для этого задания вывод какого-либо текста, включая вывод ошибок. Например, для команды wget требуется ключ -q:

wget -O /dev/null -q http://example.com/update.php

Можно отключить вывод любого текста командой, добавив конструкцию 1>&2 2>/dev/null в её конец:

/usr/bin/php /home/l/login/mymail.php 1>&2 2>/dev/null

Дополнительные сведения

► Абсолютный путь до корневой папки аккаунта формируется следующим образом:

  • /home — домашняя папка сервера.
  • /l — первая буква логина аккаунта
  • /login — логин аккаунта.

Например, для аккаунта с логином spaceweb путь до корневой папки аккаунта имел бы следующий вид: /home/s/spaceweb/

Абсолютные пути до папок расположенных на аккаунте сайтов указываются в разделе «Домены» в колонке «Папка» напротив каждого доменного имени.

► Cледует учитывать, что на сервере используется регистрозависимая файловая система. Это означает, что в тексте задания все имена файлов и папок надо указывать точно так же, как они определены на сервере.
Например, если на аккаунте с логином swebuser требуется выполнять файл SCRIPT.PHP (имя файла полностью задано в верхнем регистре) из папки Scripts (первая буква имени в верхнем регистре), то правильный абсолютный путь до файла будет следующим:

/home/s/swebuser/Scripts/SCRIPT.PHP

Не нашли ответ на свой вопрос? Позвоните нашим специалистам по бесплатному телефону 8-800-100-16-15.