Планировщик CRON. Как его установить и как им пользоваться — инструкция

Многие пользователи сталкивались с тем, что некоторые программы необходимо запускать с определенной периодичностью или по расписанию, но делать это вручную удается далеко не всегда. Чаще всего такого рода потребность возникает на серверных машинах. И если на вашем сервере установлена операционная система семейства Unix (Debian, Centos, FreeBSD, Ubuntu), Cron или как еще его называют, демон-планировщик Cron — это то, что вам нужно.

Как понятно из второго названия, Cron — это специальная программа-планировщик, способная выполнять поставленные задачи по расписанию, причем неоднократно. К слову, выполнить запуск PHP-скрипта Cron также способен, не говоря уже о выполнении более тривиальных задач как в определенный отрезок времени, так и с заданной периодичностью.

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

Установка, принцип работы и настройка Cron

Как правило, в большинстве стандартных дистрибутивов Unix-подобных систем демон-планировщик Cron содержится по умолчанию и устанавливается в составе пакета программ. Он уже присутствует на виртуальном хостинге и любом тарифе виртуальных серверах VPS

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

  • Установка для Red Hat:
    1. Откройте консоль.
    2. Введите yum install vixie-cron.
  • Установка Cron для Debian-подобных систем:
    1. Откройте консоль.
    2. Введите apt-get install cron.

После этого можно считать, что планировщик успешно установлен

Команды Cron и принцип работы планировщика

После запуска ОС планировщик выстраивает очередь задач от всех пользователей. Затем он также дополнительно анализирует, есть ли crontab в /var/spool/cron и соответствуют ли файлы задач информации о пользователях, представленной в /etc/passwd. Важно помнить, что каждой учетной записи доступен один crontab, но при этом в нем можно размещать много задач.

После окончания проверки Cron считывает задания и время их исполнения из crontab и, если это необходимо, приступает к запуску сценариев.

Синтаксис crontab имеет такой вид:

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

С настройками по умолчанию /etc/crontab выглядит так:

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root

HOME=/

# run-parts

05 * * * * root run-parts /etc/cron.hourly

09 9 * * * root run-parts /etc/cron.daily

13 8 * * 0 root run-parts /etc/cron.weekly

58 6 3 * * root run-parts /etc/cron.monthly

Из описанного выше следует, что:

  • задача из /etc/cron.hourly исполняется в пятую минуту каждого часа;
  • задача из /etc/cron.daily будет исполняться ежедневно в девятую минуту девятого часа;
  • задача из /etc/cron.weekly будет исполняться каждое воскресенье на тринадцатой минуте восьмого часа;
  • задача из /etc/cron.monthly исполняется ежемесячно, в третий день на пятьдесят восьмой минуте шестого часа.

SHELL=/bin/bash означает, что команды из bin/bash будут использоваться для запуска Cron. Если же переменная не была указана, то необходимое значение будет позаимствовано из /etc/passwd для всех пользователей.

HOME=/ — указание корневого каталога.

MAILTO=root указывает, кому отправлять рапорт о выполнении задачи. Если результат выполнения вас не интересует, то в конце сценария следует записать Cron dev null, тогда будет приходить только уведомление об успешном завершении работы сценария или же неудачной попытке.

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

Настройка Cron (Centos, FreeBSD, Ubuntu)

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

  1. Для начала решите, какие программы будут выполняться, а также узнайте путь к ним. Последнее можно сделать, перейдя в каталог с программой и используя команду cd.
  2. Далее, используя команду pwd, посмотрите полный путь к месту размещения нужной программы. При этом убедитесь, что у вас есть права на чтение и исполнение необходимого файла.
  3. Наберите команду crontab -e. После ее выполнения откроется редактор vi, где и будет выполняться настройка Cron относительно отдельно взятого сценария.

Выше уже упоминался формат Cron-команд, который указывается без скобочек и подчиняется следующим ограничениям:

  • в поле [минута] можно вводить значения от 0 до 59;
  • в поле [час] можно вводить значения от 0 до 23;
  • в поле [день] можно вводить значения от 1 до 31;
  • в поле [месяц] можно вводить значения от 1 до 12;
  • в поле [неделя] можно вводить значения от 0 до 7.

Важной особенностью команды Cron является то, что каждому параметру можно задать не одно, а несколько значений. В таких случаях каждое из них задается через запятую. Фактически это будет означать, что задача должна выполняться в каждый отрезок времени. Также можно указать интервал значений, используя значок «-», и это будет означать, что задание необходимо выполнять ежедневно, каждый час или месяц.

Формат Cron предполагает, что в строке содержится только одна команда. При этом после строки (даже если она была единственной) вы должны нажать клавишу Enter, иначе сценарий не будет принят к исполнению. И если вы допустите ошибку при заполнении нового задания, после его сохранения программа укажет вам на нее. Далее все просто — исправляете ошибку и заново сохраняете сценарий.

Напоследок, для лучшего понимания работы планировщика, представим вашему вниманию актуальные примеры crontab для FreeBSD и любых других Unix-подобных систем.

  • Выполнение команды из crontab каждые 5 минут */5 * * * * /home/user1/script.pl
  • Задача будет исполняться каждые 5 часов на 1-й минуте 1 */5 * * * /home/user1/script.pl
  • Выполнение поставленной задачи ежемесячно 1-го числа на 9-й минуте 8-го часа 9 8 1 * * /home/user1/script.pl

Еще одной примечательной особенностью программы является то, что после изменения в сценарии вам не нужно выполнять перезапуск Cron, потому что планировщик подхватывает изменившиеся данные автоматически. Если же сбой все-таки случился, и программа не распознала измененные данные, то Cron reboot можно выполнить через терминал при помощи команды sudo /etc/init.d/cron restart. После перезапуска все изменения наверняка будут отмечены планировщиком.

У вас остались вопросы относительно работы демоном-планировщиком Cron или все еще не слишком понятен синтаксис crontab для Ubuntu или любой другой Unix-системы? Вы можете обратиться за помощью к сотрудникам нашей техподдержки. Одним из многочисленных преимуществ использования хостинга от RigWEB является не только стабильность серверов, но и квалифицированные специалисты, которые всегда готовы ответить на ваши вопросы и оказать поддержку в решении любых вопросов в рамках своей компетенции.

Пользуйтесь профессиональным хостингом от RigWEB и достигайте максимальной продуктивности при работе над своими проектами!

Добавить комментарий

Ваш адрес email не будет опубликован.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.