Настройка cron для Drupal7(Debian7)

Системный крон сервера.
Что бы настроить запуск системного крона, нужно в файл .crontab, прописать строчку с временем запуска и именем файла который нужно будет запустить(в нашем случае это cron.php).
Для этого нужно будет убедится , что процесс запущен.

ps ax |grep cron

При необходимости загружаем пакеты

apt-get install cron

Как работает системый cron?
При загрузке ОС, запускается сервис cron и проверяет очередь заданий at и заданий пользователей в файлах crontab, в каталогах /var/spool/cron
При запуске сервис идет в каталог /var/spool/cron и проверяет там наличие файлов сrontab, с заданиями для выполнения.

Доступ юзерам к сервису, настраивается в каталоге /var/spool/cron/tabs/user.
Их права задаются в файлах /cron/allow и /deny.

Добавляя пользователя в /allow мы разрешаем ему выполнять команду cron, а если добавить пользователя в /deny, то наоборот, пользователю будет запрещено пользоваться сервисом.

Он может содержать записи трех видов: коментарий, задание переменных окружения (MAILTO, PATH, HOME,SHELL,LOGNAME), команда для сron'a.
Комментарий обозначается знаком '#'.

Переменные окружения задаются как .

  1. SHELL=/bin/bash - означает использовать для запуска команд /bin/bash, если переменная не указана, то значение будет взято из /etc/passwd для пользователя являющимся владельцем файла.
  2. HOME=/ - эта переменная определяет корневой каталог для пользователя (параметр не обязательный) При необходимости доступа к специальным свойствам интерпретатора, значения переменных SHELL и HOME можно изменить, не зависимо от того, что прописано в /etc/passwd.
  3. MAILTO=user@gmail.com - здесь указывается куда посылать сообщения об ошибках и результатах выполнения команд.
  4. PATH=/bin:/usr/bin:/usr/local/bin - В качестве аргумента через «:» принимаются пути для поиска и запуска нужных программ. Как правило, значение этой переменной различается для простого пользователя и администратора — для того, чтобы разделить их рабочий инструментарий.
  5. LOGNAME=user - содержит имя пользователя.

Использование переменных окружения позволяет настроить настроить среду под свои нужды.

Команда для сron'a, представляет собой шесть полей разделенных пробельными символами.
Разделять команды очень важно иначе команды выпонятся не будут!
Каждый пользователь может иметь только один файл crontab, записей в файле может быть несколько. Рассмотрим формат файла.
Первые пять указание периодичности, шестое, имя запускаемой программы.
linux_crontab_syntax.gif

Сам cron настраивается в каталоге /etc/crontab. Файл /crontab или файлы в /etc/cron. d содержат список команд, предназначенных для выполнения. Синтаксис таков:

/etc/crontab
[минута][час][день][месяц][неделя][пользователь][команда]

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

*/15 **** root ping ya.ru

Если в любом из первых пяти полей стоит символ *, то это поле игнорируется.

Символ '/' задает диапазон с шагом, используется для пропуска в диапазонах. Так '*/5' в поле «часы» будет означать что программа будет запускаться каждые пять часов. Более сложным для понимания является такой пример '5-23/4', он говорит: «запускать в 5, 9, 13, 17, 21 часа».


поле1 поле2 поле3 поле4 поле5 команда

  1. 1. минуты — число от 0 до 59
  2. 2. часы — число от 0 до 23
  3. 3. дни месяца — число от 1 до 31
  4. 4. месяц — число от 1 до 12
  5. 5. день недели от 0 до 7 ( Вс. =0 или =7)


Работа с .hourly, .daily, .weekly, .monthly

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

  1. /etc/cron.hourly/* — сценарии выполняющиеся каждый час
  2. /etc/cron.daily/* — сценарии выполняющиеся каждый день
  3. /etc/cron.weekly/* — сценарии выполняющиеся каждую неделю
  4. /etc/cron.monthly/* — сценарии выполняющиеся каждый месяц

Чтобы сервис выполнял ваши команды, добавьте сценарий выполняющий команды в один из каталогов. Не забудьте установить бит execute(chmod a+x файл). Если вы этого не сделаете, то у вашего сценария просто не будет доступа и он выполнятся не будет!
Для проверки, будет ли запускаться ваш сценарий, выполните команду

run-parts --test /etc/cron.daily

Если сценарий расположен в другом каталоге, то соответственно меняйте daily на monthly и т.д.
И помните, в имени сценария не может быть точек, любые символы, кроме точек.

Теперь непосредственно перейдем к рассмотрению команды запуска cron.php.

Здесь несколько вариантов, выбор нужного зависит от предпочтений и от конфгурации
хоста на котором планируется выполнение cron'a. Для этих целей можно использовать wget и lynx. Вот команды которые необходимо записать в файл крона с использованием этих двух программ:
0 * * * * /usr/bin/wget -O — -q www.yoursite.ru/cron.php # wget — программа для скачивания файлов по сети.
0 * * * * /usr/bin/lynx -source www.yoursite.ru/cron.php > /dev/null 2>&1 # lynx- текстовый браузер. Запись >/dev/null 2>&1 подавляет отправку сообщений и ошибок, на стандартный вывод. Необязательно.
Но перед тем как что то редактировать нужно убедиться что указанные программы доступны.

Для этого применяется команда which или whereis.

Запустите терминал и введите whereis wget, если в ответ вы получите  /usr/bin/wget, значит все в порядке.
Аналогично и с остальным.

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

  1. -l — выводит содержимое текущего сrontab файла на стандартный вывод.
  2. -r — удаляет текущий файл.
  3. -е — предназначен для редактирования.
  4. -u — пользователь чей crontab необходимо обработать.

Таким образом, вводим crontab -e (если хотим отредактировать файл другого пользователя вводим crontab -u name_user -e) . Добавляем нужную строку сохраняемся и выходим.

Russian
Категория: 
The code has been tested and works
Мультитег: 

Add new comment

Filtered HTML

  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Lines and paragraphs break automatically.

Plain text

  • No HTML tags allowed.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.
CAPTCHA
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.
Target Image