Расписание крон. Cron — запуск программ пользователя в указанное время

В системе Linux автоматический запуск заданий выполняется демоном crond , а составлять расписания для автоматического запуска заданий могут не только администратор системы, но и пользователи.

Как работает crond

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

Составление расписания заданий

Составление расписания - задача несложная. Расписание размещается в отдельном файле crontab . В каждой строке файла помещается задание, которое должно быть запущено в определенное время.

Формат записей файла crontab

Часть time-date (время-дата) состоит из пяти числовых полей, разделенных пробелами и определяющих время запуска задания:

Для удобства заполнения указанных полей введены следующие правила:

  • Можно указывать значения в виде численных интервалов. К примеру, интервал 1-3 в поле часов означает 1.00, 2.00 и 3.00 пополуночи, 2-4 в поле дня недели - вторник, среду или четверг.
  • Интервалы можно задавать с шагом больше единицы. Например, чтобы указать каждый второй час, начиная с полуночи, следует установить интервал 0-23 с шагом 2 через косую черту: 0-23/2
  • Звездочка (*) указывает полный интервал значений поля - от минимального до максимального. Например, в поле дня месяца звездочка означает интервал 0-31, в поле дня недели - 0-7
  • День недели или месяц можно указать первыми тремя буквами его (английского) названия

Примеры времени-даты

Несколько примеров заполнения полей времени-даты:

0 1 * * * Запуск задания ежедневно в 1.00 пополуночи 30 14 * * 0 Запуск задания по воскресеньям в 2.30 пополудни 0 23-7/2,8 * * * Запуск задания каждые 2 часа с 23.00 до 7.00 и в 8.00 0 12 * 1 mоn Запуск задания в полдень каждого понедельника января каждого года 0 12 2 feb * Запуск задания в полдень второго февраля каждого года

Поле command

Поле command (команда) отделено от полей времени-даты одним или несколькими пробелами и простирается до конца строки. Команды обрабатываются оболочкой /bin/sh .

Например, следующая запись в файле crontab предусматривает ежедневный запуск программы /usr/sbin/backup в 1.00 пополуночи:

0 1 * * * /usr/sbin/backup

Некоторым командам (например, mail) требуется ввод информации с устройства стандартного ввода. Это указывается при помощи знака процента (%). Первый такой знак обозначает начало стандартного ввода, каждый последующий - смену строки.

Редактирование файла crontab

Файл crontab редактируется командой crontab -e . Возможны два подхода:

  • создание нового файла со всеми записями, которые должны входить в файл crontab , с последующей его записью на диск под этим именем по команде crontab ;
  • непосредственное редактирование файла по команде crontab -e .

Запись из файла

Для записи содержимого файла crontab из другого файла необходимо создать этот другой файл (в привычном текстовом редакторе) со всеми записями, из которых должен состоять файл crontab . Это могут быть, к примеру, следующая запись:

0 1 * * * /usr/sbin/backup

Созданному файлу следует присвоить подходящее имя, например сron jobs . После того, как указанный файл создан, его содержимое необходимо записать в файл crontab командой:

~$ crontab cronjobs

Содержимое файла cronjobs полностью заменит содержимое файла crontab данного пользователя. Используя этот метод, любой пользователь может редактировать свой файл crontab . Суперпользователь обладает особым правом редактировать файлы crontab остальных пользователей. Редактирование чужого файла указывается флажком -u . Например, по команде:

~# crontab -u oleg cronjobs

файл cronjobs записывается как файл crontab пользователя oleg .

Непосредственное редактирование файла crontab

Команда crontab позволяет избежать многоступенчатой операции с созданием отдельного файла. Если ввести команду crontab с опцией -е, можно редактировать файл crontab непосредственно.

По умолчанию по команде crontab с опцией -е файл crontab загружается в редактор . Редактор Vi - мощный, хотя и сложный инструмент, популярный среди опытных пользователей Unix . Тот, кто предпочитает другой редактор, например Xedit , может установить соответствующее значение переменной среды EDITOR:

~$ export EDITOR=xedit

После этого ввод команды

приводит к открытию файла crontab в указанном редакторе.

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

~# crontab -u user-name -e

Просмотр файла crontab

Для просмотра содержимого файла crontab вводится команда:

Суперпользователь может просматривать файлы crontab остальных пользователей:

~# crontab -u username -l

Удаление файла crontab

Для удаления содержимого своего файла crontab пользователь вводит команду:

Суперпользователь может удалять файлы crontab остальных пользователей.

Оригинал: Using cron scheduler on Linux systems
Автор: Rares Aioanei
Дата публикации: 29 сентября 2011 года
Перевод: А. Кривошей
Дата перевода: ноябрь 2011 г.

1. Введение

Если вы уже имеете некоторый опыт системного администрирования Linux, то должны знать, что такое cron и для чего он предназначен. Если же вы только начинаете работать с Linux, то эти знания вам пригодятся. Даже если вы уже изучали использование cron, данная статья поможет вам освежить знания.
Название cron происходит от Cronos, древнегреческого олицетворения времени. И это правильно выбранное имя, так как основным предназначением cron является помощь в планировании различных задач, которые система должна выполнить в заданное время. Если вы пользовались Windows, то вероятно вам приходилось копаться в утилите Scheduled Tasks. В целом назначение у программ аналогичное, но реализация разная. Cron предназначен для серьезных задач системного администрирования и обладает большей гибкостью. В качестве примера реальной задачи можно привести резервное копирование. Понравится ли вам вручную выполнять резервное копирование данных на нескольких сотнях машин? Думаю, нет. Вы просто пишете простой скрипт с использованием rsync, планируете его выполнение, например ежедневно, и забываете об этом. Все, что необходимо в дальнейшем - время от времени проверять логи. Некоторые даже используют cron для напоминания о важных личных событиях, например о днях рождения. Но cron - это просто демон, запускающий указанные вами задания. А имеется ли утилита, помогающая редактировать/добавлять/удалять эти задачи? Конечно имеется, и называется она crontab (от cron table). Однако будем двигаться вперед последовательно и начнем с инсталляции.

2. Инсталляция cron

Большинство дистрибутивов используют Vixie Cron и некоторые другие производные как дефолтную реализацию cron, и именно их мы будем рассматривать в этой статье. Кроме того, практически во всех дистрибутивах cron уже предустановлен, так как он является очень важной частью системы Linux. Хотя обычный пользователь, как правило, никогда не работает с ним напрямую, система и многие приложения используют cron (хорошим примером является периодическое обновление базы данных man-страниц). Значимым исключением является Gentoo, где необходимо вручную установить vixie-cron и добавить его в runlevel по умолчанию. В Arch, Debian, Slackware, Ubuntu, Fedora и OpenSUSE cron установлен по умолчанию и автоматически запускается при загрузке системы. Мы надеемся, что вы изучите man-страницы cron и crontab, так как во многих дистрибутивах используются их пропатченные версии, что делается для лучшей интеграции программы под конкретный дистрибутив. Поэтому существует вероятность, что функция, которая имеется например в Gentoo, будет недоступна в Slackware. В любом случае, нет ничего лучше чтения man-страниц, особенно если имеешь дело с новой программой, которую собираешься достаточно часто использовать.

3. Использование cron

Во-первых, мы должны убедиться, что cron запущен:

$ ps faux | grep cron

Если в выводе ничего не будет, проверьте, запущен ли cron, и добавьте его в службы, запускаемые по умолчанию, чтобы он стартовал при следующей загрузке. Как это сделать, зависит от дистрибутива. В системах Debian команда должна вывести примерно следующее:

Root 1424 0.0 0.0 22000 884 ? Ss 13:56 0:00 /usr/sbin/cron

Теперь заставим cron работать. Сначала необходимо подумать о том, какую команду мы будем использовать. Требует ли она привилегий root? Предположим, мы будем использовать crontab, чтобы добавить простой скрипт на выполнение через каждые пять минут как простой пользователь.

3.1. Crontab

3.1.1. Пример

Напишем простой скрипт, который будет выводить обычное диалоговое окно на базе curses в терминале (требуется dialog и любой эмулятор терминала - мы используем xterm):

#!/bin/sh xterm -e "dialog --msgbox "Testing cron..." 234 234" # This is a very simple example, treat it as it is

Назовем файл crontest.sh и сделаем его исполняемым, так как все, что запускается с помощью cron, должно быть исполняемым:

$ chmod +x crontest.sh

Теперь нам нужно отредактировать пользовательскую таблицу crontab, чтобы добавить запись для нашего замечательного скрипта:

E ставится для редактирования, -r - для удаления. Будьте очень осторожны! Многие системные администраторы по неосторожности вводили -r вместо -e, тем более что эти клавиши расположены рядом, и удаляли все записи из crontab. В любом случае, скорее всего вы увидите полностью закоментированный файл (в crontab для обозначения комментариев используется #), в котором приведены примеры и описаны назначения полей записей. Да, запись состоит из полей, последнее из которых задает исполняемую команду, а остальные - временные характеристики. Итак, наша запись в crontab для скрипта, запускаемого каждые пять минут, выглядит следующим образом:

$ */5 * * * * export DISPLAY=:0 && /home/$user/crontest.sh

Нам необходимо экспортировать переменную DISPLAY, чтобы xterm не выдавал ошибки вида "DISPLAY is not set". Теперь посмотрим назначение каждого поля.

3.1.2. Поля crontab

Если вы работали ранее с символами для подстановки, то вам не составит труда освоить использование звездочки в crontab: она означает, что вместо нее подставляются все возможные значения поля. Поля по умолчанию в Linux (будьте внимательны, некоторые Unix-системы используют другие реализации cron) обозначают, слева направо: минуту, час, день месяца, месяц, день недели, год (необязательно) и исполняемую команду. Таким образом, если мы хотим, чтобы наш скрипт запускался каждые пять минут, каждый час, каждый день, каждый месяц и каждый год, наша запись должна выглядеть так:

5 * * * * export DISPLAY=:0 && /home/$user/crontest.sh

Мы призываем вас быть осторожнее с полем дня недели: в вашей стране первым днем недели может быть понедельник, а в других странах им может быть воскресенье. Если работаешь в мультикультурной, многонациональной среде, необходимо помнить о культурных и религиозных особенностях. Cron отправляет уведомления пользователю, которому принадлежит запись, на его почтовый адрес по умолчанию ($user@$hostname). Если вы хотите изменить адрес электронной почты, просто добавьте "MAILTO=$email_address" в crontab. Если вы хотите отключить эту функцию, добавьте ">/dev/null 2>&1" в конец записи.
Теперь, если вы уже устали от всплывающего каждые пять минут окна, снова запустите crontab -e, чтобы удалить или, что проще, закомментировать запись. Чтобы просмотреть содержимое crontab, просто используйте опцию -l (list).

3.2. Взгляд на /etc/

3.2.1. Скрипты cron

В предыдущих разделах мы решали простые и тривиальные задачи, просто для разминки, а теперь мы уже займемся серьезными делами. Заголовок данного раздела относится к директориям в /etc, которые отвечают за периодические задачи по обслуживанию системы. Например, в директории /etc/cron.weekly имеется скрипт man-db, который обновляет базу данных man-страниц. Все подобные скрипты включены в состав дистрибутива и запускаются согласно файлу /etc/crontab. Поэтому, если вы хотите разобраться их работе, лучше всего изучить содержимое этого файла. Вы увидите записи, похожие на те, что мы делали ранее, но исполняемые команды будут отличаться. "run-parts" - это небольшая утилита, созданная для запуска всех скриптов в заданном каталоге.
Внимательный читатель может заметить, что в /etc/crontab имеется одно поле, которого мы не видели при редактировании своего crontab - это поле "user". Это сделано по соображениям безопасности. Если вы вводите команду crontab -e как $user, это значит, что любая команда запускается от имени $user. Но так как /etc/crontab относится ко всей системе, необходимо явно задавать пользователя, так как может потребоваться запускать определенные скрипты или программы от имени другого пользователя, а не от root, особенно если системный администратор заботится о безопасности и добавляет пользователей и группы в систему по мере необходимости. Пример: для резервного копирования не нужны все привилегии root, требуются только права на чтение и запись в определенные директории, поэтому администратор создает группу backup и пользователя backupadmin с необходимыми правами и запускает ночные скрипты резервного копирования с помощью записи:

30 23 * * * backupadmin /home/backupadmin/nightlybkup.sh

Эта запись запускает скрипт nightlybkup.sh каждую ночь в 23:30. Если мы захотим запускать резервное копирование только с понедельника по пятницу, нужно отредактировать нашу запись:

30 23 * * 1-5 backupadmin /home/backupadmin/nightlybkup.sh

Если вы захотите запускать резервное копирование только по понедельникам, средам и пятницам, замените "1-5" на "1,3,5". Когда вы точно знаете, что вам нужно, cron становится понятным и простым в использовании.

4. Размышления о безопасности

Существует множество ситуаций, когда вы не хотите, чтобы пользователь, имеющий доступ к вашей системе, имел возможность создавать записи crontab. Здесь в игру вступают файлы /etc/cron.deny и /etc/cron.allow. Их использование аналогично /etc/hosts.allow и /etc/hosts/deny, поэтому, если вы работали с этими файлами раньше, то будете чувствовать себя как дома. Этих двух файлов (cron.deny и cron.allow) по умолчанию нет в системе, по крайней мере на системе, в которой мы работаем, поэтому по умолчанию всем разрешено создавать записи в crontab. Вы можете проверить, какие файлы, относящиеся к cron имеются в вашем каталоге /etc с помощью команды:

$ ls /etc | grep cron

И снова напоминаем, что все сказанное справедливо для Linux, так как отсутствие этих файлов на Solaris означает прямо противоположное, кроме того, файлы расположены в других местах. Сначала проверяется cron.allow, поэтому обычно мы вводим "ALL" в cron.deny, а затем добавляем пользователей, которым мы хотим предоставить доступ, в cron.allow.

5. Примеры использования cron

Каждую минуту:

* * * * * /usr/local/bin/check-disk-space.sh

Команда будет выполняться каждую минуту, день и месяц.

По дням:

30 02 10 01,06,12 * /home/$user/bin/checkdrive.sh

Эта команда будет запускать скрипт checkdrive.sh в 02:30 каждое 10 число января, июня и декабря.

Каждые полчаса:

00,30 * * * * /home/$user/backupdata.sh

Только по выходным:

* * * * 6,7 /usr/bin/weekend

Дважды в день:

20 11,16 * * * /usr/sbin/command

Команда будет выполняться каждый день в 11:20 и 16:20.

Каждый час в один конкретный день:

01 * 2 05 * /sbin/system_command

Каждые 10 минут во время пяти рабочих дней (понедельник - пятница):

*/10 * * * 1-5 /usr/local/bin/check-disk-space.sh

Только в рабочее время:

00 09-17 * * 1-5 /usr/local/bin/check-disk-space.sh

Эта команда будет выполняться один раз в день с 9 до 17 часов.

0 0 1 1 * /usr/local/bin/check-disk-space.sh

Дважды в год в 12:00 и в 24:00

0 0,12 1 */6 * /usr/local/bin/check-disk-space.sh

Эта команда будет исполняться дважды в год (каждые 6 месяцев) в 12:00 и в 24:00.

Каждый третий четверг любого заданного месяца в 10:00:

0 10 15-21 * 4 /usr/local/bin/check-disk-space.sh

Каждый день через 20 минут после каждого четного часа:

20 0-23/2 * * * /usr/local/bin/check-disk-space.sh

Эта команда будет выполняться каждый день через 20 минут после каждого четного часа (0:20, 2:20...22:20).

6. Заключение

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

Если вам понравилась статья, поделитесь ею с друзьями:

Недавно мне пришлось настраивать запланированную задачу на сервере, и в первый раз это трудно, и даже страшновато. Поэтому я решила написать статью об этапах настройки Cron . Мы создадим простой PHP-скрипт для отправки электронной почты один раз в день.

Необходимый базовый уровень

  • Базовый опыт работы с командной строкой;
  • Навыки работы с SSH на сервере Linux .

Задачи

  • Научиться настраивать простую запланированную задачу (задание cron ) в среде Linux-сервера ;
  • Установить задачу cron для отправки электронной почты ежедневно в указанное время.

Отправка электронной почты с помощью PHP

Сначала нужно создать простой PHP-скрипт для тестирования Cron Linux настройки. Я собираюсь создать файл, который отправляет электронную почту:

Если вы не знакомы с PHP-функцией mail() ознакомьтесь с официальной документацией . Я устанавливаю переменные, задающие получателя, электронный адрес отправителя, тему, содержание письма и заголовки. Это не самый современный или безопасный способ отправки электронной почты. Но это работает, поэтому я собираюсь использовать его для тестирования. Сохраняем код в файле cron.php .

Путь к публичной папке будет зависеть от дистрибутива Linux , но я поместила файл cron.php в /var/www/html/crontest . Поэтому полный путь к моему скрипту будет следующим: /var/www/html/crontest/cron.php . Вы можете протестировать этот скрипт непосредственно в браузере. Если адрес вашего сайта example.com , скорее всего, адрес файла будет example.com/crontest/cron.php . Если вы запускаете файл и получаете электронное письмо, значит, скрипт работает.

Localhost не настроен для отправки PHP-почты , поэтому этот скрипт должен запускаться из среды Linux .

Основной синтаксис Cron

Есть полезный сайт под названием Crontab Generator , который может настроить Cron PHP , но сначала мы кратко рассмотрим основной синтаксис.

Пример работы Cron :

* * * * * /usr/bin/php /var/www/html/crontest/cron.php > /dev/null 2>&1

Части команды cron

Команда cron состоит из четырех основных частей:

Время выполнения Выполнение PHP Путь к скрипту Результат * * * * * /usr/bin/php /var/www/html/crontest/cron.php > /dev/null 2>&1

Время выполнения — устанавливает минуты, часы, дни, месяцы и день недели.

Выполнение — задача cron должна вызвать PHP , который находится в папке /usr / bin / php .

Путь к скрипту — полный путь к файлу, который необходимо запустить.

Результат (необязательно ) — можно записать результат в файл или отбросить эту часть > /dev/null 2>&1 .

В приведенном выше примере задача Cron Linux настроена на отправку электронной почты каждую минуту часа ежедневно. Звездочка — это подстановочный знак, обозначающий «все ».

  • Минуты — установите минуты, от 0 до 59;
  • Часы — установите часы, от 0 до 24;
  • Дни — установите день, от 1 до 31;
  • Месяцы — установите месяц, от 1 до 12 (январь-декабрь );
  • Неделя — установите день недели, от 0 до 6 (воскресенье — суббота ).

Вот несколько простых примеров:

Синтаксис Пояснение 0 * * * * запускается один раз в час (каждую нулевую минуту каждого часа). 0 0 * * * запускается один раз в день (в полночь каждого дня в нулевую минуту). 0 0 1 * * запускается один раз в месяц (в первый день каждого месяца в полночь в нулевую минуту). 0 0 1 1 * запускается один раз в год (в первый день первого месяца в полночь в нулевую минуту).

Существуют и другие настройки, например, для нечетных / четных дней, каждые 5 минут и т. д. Также доступно множество ресурсов, на которых можно найти конкретные настройки.

Настройка задачи Cron

Если cron настроен под учетной записью root , тогда нужно запустить sudo перед запуском кода.

Команда cron называется crontab . Мы задаем для нашей задачи выполнение рассылки электронной почты один раз в день, так что полная команда будет такой:

0 0 * * * /usr/bin/php /var/www/html/crontest/cron.php >/dev/null 2>&1

После того, как вы зашли на сервер SSH , можно проверить, существуют ли другие текущие задачи. Это можно сделать с помощью следующей команды.

crontab -l crontab: no crontab for user

Теперь мы отредактируем crontab :

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

Вот что нужно сделать:

  1. Нажмите esc ;
  2. Нажмите i , чтобы начать редактирование файла;
  3. Вставьте команду cron в файл;
  4. Снова нажмите esc , чтобы выйти из режима редактирования;
  5. Введите :wq , чтобы сохранить изменения в файле (w — write ) и выйти (q — quit ).

Теперь crontab сохранен, и электронное письмо должно отправляться один раз в день в полночь. Вы можете установить * / 5 * * * * — каждые 5 минут, чтобы проверить его работу.

Также можно добавить в файл несколько задач cron . Для этого поместите каждую команду в отдельную строку.

Перевод статьи «Setting Up a Basic Cron Job in Linux » дружной командой проекта

Cron (крон), Crontab (кронтаб), Планировщик Задач - эти названия все, кто связан с «сайтостроением» слышали неоднократно. Так что же такое Cron? Как с ним работать? Зачем нужен Cron и как его правильно настроить? Все эти вопросы мы сегодня и разберем.

Первое что хочу сразу отметить: Cron , Crontab , Планировщик Задач - это всё одно и тоже, не смущайтесь от разнообразия названий.

В практике любого web-мастера, неизменно возникнет необходимость в запуске каких-либо задач по расписанию. Т.е. Вы просто прописываете нужную Вам команду, на выполнение какой-то задачи в заданное время, и всё. Дальше все происходит без Вашего участия – автоматически, и что самое приятное в нужное Вам время.

Например, Вам нужно периодически отсылать уведомления партнерам по электронной почте. Или Вы хотите установить автоматические поздравления или напоминания. Или у Вас есть каталог сайтов и Вы хотите чтобы с заданной периодичностью скрипт каталога проверял обратные ссылки и т.д. Все эти задачи можно запросто автоматизировать, поручив это Cron или, как ещё говорят – Планировщику Задач . А бывают скрипты в которых для нормальной работы Крон просто необходим.

Практически все современные Хостинги предоставляют уже готовую функцию Планировщика Задач . Если такой функции на Хостинге нет, то лучше не связывайтесь с такой Хостинговой компанией. Cron в наши дни - это уже не роскошь и если Хостинг не предлагает в пакете услуг планировщик задач, лучше поищите другую компанию, наверняка не будет и других важных функций.

Итак, давайте рассмотрим все практические действия по настойке Cron на примере русcифицированной cPane l (панели управления сайтом) Хостинговой компании Гудзон . Почему именно Гудзон ? Всё просто – здесь живет мой сайт и мне очень нравится этот Хостинг: полный пакет всех самых возможных услуг за очень умеренную цену.

Хотя настройка Планировщика Задач происходит примерно везде одинаково.

Заходим в панель управления сайтом, в данном случае это cPanel (бывают и другие). Доступ Вам предоставляется сразу же после покупки Хостинга , опускаемся ниже и находим вот такой раздел, Дополнительные инструменты :

Находим в этом разделе Планировщик задач и кликаем по нему. Иногда это меню называется Панель Cron . Вот как характеризуется Cron :

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

На выбор предоставляется два варианта управления Кроном:

Стандартный и Продвинутый (в стиле Unix) , рассмотрим каждый из них.

Первый вариант. Кликаем по кнопке Стандартный , открывается окно установки задач:

Как видите здесь все очень просто. Нужно просто установить время выполнения команды, указав для этого в соотвествующих полях, когда будет запускаться команда, во сколько: Минут , Час , День , Месяц , День недели . И конечно же прописать саму команду на запуск в поле: Команда для запуска .

Значения можно писать как в ручную (в левом поле), так и воспользоваться выпадающим списком (стрелочки справо).

Давайте разберемся, что мы здесь написали. А написали мы следующее задание: запускать команду на исполнение:
/usr/bin/php /home/freeman/domains/public_html/cron/new_day.php
каждые 30 минут, каждые 6 часов, каждый день января месяца, если он попадает на понедельник.

После установки задания нажимаем кнопку Add New Cron Job .

Не понятно что написали? :) Давайте расмотрим второй вариант, а затем поясню подробнее. Возвращаемся на преведущую страницу.

Второй вариант. Кликаем по кнопке Продвинутый (в стиле Unix) , открывается окно установки задач:

Этот вариант установки задания Крону, мне нравится больше. И хоть он и называется Продвинутый , на мой взгляд проще и удобнее.

Здесь так же как и в первом случае, нужно указать когда будет запускаться команда, так же указываем: Минут ы, Час ы, День , Месяц , День недели и само задание на исполнение в поле Команда . После этого нажимаем кнопку Добавить Cronjob . Задание задано. Страница обновляется:

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

Есть еще один не обязательный параметр, но я рекомендую его прописывать: это адрес электроной почты . На этот адрес будет приходить отчет об исполнении команды. Поле необязательное, но лучше адрес ввести, что бы быть в курсе дела, если что-то пойдёт не так Крон сообщит Вам об этом в письме, а если письмо пришло пустое значит всё ОК!

Что мы написали здесь? Запускать команду в 11 минут, каждого 2-го часа, каждый день, каждый месяц, 1-й, 3-й, 5-й, 7-й дни недели.

В поле выбора: Минут указываете минуту (или минуты) в которую будет запускаться задание, в поле Час указываете час (либо часы) в который(е) будет выполняться задание, а так же день(и), и месяц(ы), в каждом поле можно указать как конкретное время так и интервал.

Например, можно указать не просто 11 минут, а 11-15 (интервал), это значит, что задание будет запускаться каждые 11, 12, 13, 14, 15 минут. Или указать кокретные минуты, например: 11, 14, 18 - это значит что задание будет запускаться на 11, 14, и 18 минутах. Еще можно использовать знак * (звездочка) - обозначает каждый . Если поставить * (звездочку) в поле Минуты, то соотвественно задание будет запускаться каждую минуту, т.е. 60 раз в час.

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

Запись */2 обозначает: каждые 2 часа . Все эти вариаты записей применимы ко всем полям (Минут ы, Час ы, День , Месяц , День недели ) при указании задания Крону. Сами понимаете вариантов может быть миллионы, Запускай задание на выполнение, хоть каждую минуту круглый год. Конечно такая необходимость практически никогда не возникает, но теоретически такая возможность есть.

И еще имейте виду некоторые Хостинги наклыдывают ограничения, на запуск Крона, например не чаще 3 - 10 раз в час. Почему? Создается довольно ощутимая нагрузка на сервер. За нарушение Ваш аккаунт могут заблокировать.

Теперь давайте разберемся как заполняется поле Команда для запуска (в первом варианте) или Команда (во втором варианте).

Задание задаётся следующим образом.

Первым делом вы указываете путь к PHP на Вашем сервере, у меня на сервере путь такой /usr/bin/php у вас может быть другим, уточните у админов вашего сервера, после пути к PHP ставите пробел и пишите полный внутренний путь к файлу который должен запускать Cron . Допустим мне необходимо чтобы Крон запускал файл mail.php , зная внутренний путь к файлу я пишу следующее:

public_html/cron/mail.php

т.е. в корневой папке public_html , есть папка cron в которой лежит файл mail.php а полностью команда на запуск файла mail.php будет вылядеть так:

/usr/bin/php /public_html/cron/mail.php

На разных хостингах, путь до PHP может отличаться, и записываться по разному, корневая папка расположения сайта тоже не всегда бывает public_html , поэтому если нет конкретного примера записи задания Крону, то лучше об этом спросить у администратора, описав что Вы хотите получить в итоге. Хорошая

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

Настройка планировщика заданий Cron

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

30 3 * * 2 /yourdirectory/myscript.pl

На более понятном простому пользователю языке тут обозначены: Минуты/Часы/ДеньМесяца/ДеньНедели/Команда. Данный пример означает, что в 3:30 ночи, каждый вторник, Сron должен запускать файл с названием youdirectory/myscript.pl.

Если перечислить значения через запятую, например в пункте «День» написать 2,4,6, то файл будет запускаться в указанное время каждый вторник, четверг и субботу.

Если задать значения через дефис, то задача будет исполняться в указанном интервале времени. Например, если в пункте «Часы» задать 3-7, то файл будет запускаться каждый час с 3 до 7 утра.

Также можно задать периодичность, написав в графе времени, например, в «Часы» /12. Тогда задача будет исполняться каждые 12 часов.

Важно знать, что «*» означает не отсутствие значения, а все возможные значения. То есть, если задать * * * * 1 /yourdirectory/myscript.pl, желая, чтобы файл запускался каждый понедельник, то это окажется совершенно неверным и файл будет запускаться каждую минуту.

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

Из представленных примеров становится понятно, что данный планировщик задач в Linux является очень удобным инструментом, поэтому предлагаем вам более подробно ознакомиться с некоторыми его особенностями.

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

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

Для начала работы следует ввести команду:

Crontab –e

Далее вы попадете в vi – текстовый редактор, однако, эти редакторы могут быть разными у разных хостингов. Если вы не знакомы с работой в vi, то вы можете ввести команду: EDITOR=ee crontab –e, которая перенаправит вас в более простой и понятный редактор.

В случае, когда хостинг не осуществляет поддержку открывшегося редактора, придется разобраться с работой vi:

  • для ввода текста необходимо перейти в одноименный режим, нажав кнопку «i»;
  • для выхода из режима воспользуйтесь кнопкой «Esc»;
  • для удаления символа в режиме ввода текста воспользуйтесь клавишами «Esc», а затем «x»;
  • сохранения и выхода из файла нажмите «:wq»;
  • в обязательном порядке нажимайте клавишу «Enter» в конце каждой строчки, это необходимо для работы Cron;
  • для просмотра уже имеющихся задач в Cron введите команду crontrab-l.

Примеры задач для Cron в linux

— Исполнять задание каждые 6 часов в 30 минут каждого дня каждого месяца:

30 */6 * * * /yourdirectory/myscript.pl

— Исполнять задание после каждой перезагрузки:

@reboot /yourdirectory/myscript.pl

— Исполнять задание 15 числа каждого месяца в 00 часов 00 минут:

0 0 15 * * /yourdirectory/myscript.pl

PHP-файлы

Чтобы запустить PHP-скрипты, обычно используют интерпретатор. Универсальной инструкции по его работе нет, так как разные хостинги используют разнообразный софт. В следствие этого часто прибегают к помощи WGET для запуска PHP в Cron. Вводим следующую запись:

1 2 * * 3 root wget -O - -q -t 1 http://mysite.com/file.php

Разберем более подробно:

  • «-O-» — не дает Cron создавать дополнительные файлы, тем самым, избавляя сервер от лишнего хлама, так как работа происходит в консоли;
  • «q» — операции больше не выводятся на экран;
  • «t-1» — разрешение лишь одной попытки соединения.

Ограничения Cron

У самого Cron имеется всего одно ограничение – период исполнения задач. Если вы перегружаете сервер своего хостинга, он может поставить запрет на запуск Cron чаще, чем раз в несколько минут или час. Кроме этого Cron ограничен только ресурсами сервера, такими как: оперативная память, объемы данных, время выполнения команд и т.д.

Если сервер перезагрузится, то Cron сохранит все ваши задачи, перезагрузившись вместе с ним.

Отчет

У Cron существует настройка, чтобы настроить уведомления о его работе на электронную почту. Это особенно полезно, если при работе случится какая-либо ошибка. Чтобы включить такие уведомления на почту, необходимо в crontab вписать строчку:

MAILTO= [email protected]

После MAILTO= указывается необходимая почта. Указать их можно сразу несколько, перечислив через запятую. Теперь, если вдруг случится ошибка, вы будете проинформированы об этом. При чем, к вам на почту будут приходить и результаты работы скриптов. Однако, если данная функция вам мешает, ее можно и отключить, введя в конце задачи команду > /dev/null 2>&1.



Просмотров