/
/
Работа с планировщиком заданий CRON

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

Для чего это нужно

С помощью планировщика CRON пользователь может создавать задачи на выполнение определенных команд или скриптов по заданному расписанию.

Инструкции

В панели ispmanager 6

Управление планировщиком заданий в панели выполняется в разделе "Планировщик CRON".

 

В главном меню раздел "Планировщик CRON" имеет следующие возможности:

  • Создать задание;
  • Изменить параметры задания;
  • Удалить задание;
  • Включить и выключить задание;
  • Настройки планировщика;
  • Выполнить задание.

Настройки самого планировщика представляют собой два параметра:

  • Адрес e-mail — адрес электронной почты, на который будут пересылаться результаты выполнения команд планировщика. В настройках каждого задания можно включить опцию ”Не отправлять отчет по e-mail”, если отправка отчета о его выполнении не требуется;
  • Путь — путь до каталогов исполняемых файлов. В качестве разделительного символа используется двоеточие.

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

  • Команда - выполняемая планировщиком команда;
  • Описание - описание самого задания;
  • Расписание - график, согласно которому задание будет выполняться автоматически.

 

График выполнения можно настроить в базовом и экспертном режиме. Экспертный режим отличается от базового только возможностью настройки графика выполнения задания более гибко.

В базовом режиме, настройка графика содержит всего 3 параметра:

  • Периодичность выполнения;
  • Час выполнения задания;
  • Минута выполнения задания.

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

  • Символ "*" - каждое новое значение. Например, каждую минуту, час или день;
  • Символ "," - перечисление значений. Перечисление должно выполнятся без пробелов;
  • Символ "*/" - каждое значение с определенным шагом;
  • Символ "-" - диапазон значений.

Например, чтобы выполнять задачу в 1 и 30 дни каждого месяца с 10 до 22 часов и каждые 5 минут, необходимо выставить параметры как на скриншоте ниже.

Пример использования

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

В разделе "Менеджер файлов" создайте файл servtimetest, например в директории пользователя "root". Внесите в файл следующие строки:

#! /bin/sh
date>> date-out.txt

 

Сохраните изменения и скопируйте путь до файла из поля "Имя файла" - он потребуется при указании пути исполняемого файла в задании.

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

 

После создания скрипта, перейдите в раздел "Планировщик CRON" для создания задания. Нажмите на кнопку "Создать задание" и новой вкладке, в поле "Команда" укажите путь до скрипта, который был скопирован ранее.

Переключитесь в экспертный режим расписания и укажите в поле "Минуты" значение "*/2", а во всех остальных - "*".

 

После сохранения задания, каждые две минуты время сервера будет записываться в файле date-out.txt, который появится рядом со скриптом.

В консоли

Через консоль, с планировщиком заданий CRON можно работать через команду crontab:

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

Список задач в консоли отображается следующим образом:

root@example:~# crontab -l
## Ispmanager update package cache task
26 1 * * *      /usr/local/mgr5/sbin/cron-ispmgr sbin/pkgupdate.sh >/dev/null 2>&1
## Ispmanager stat handler (ispmgr)
37 22 * * *     /usr/local/mgr5/sbin/cron-ispmgr sbin/mgrctl -m ispmgr ispstat >/dev/null 2>&1
## Ispmanager periodic tasks handler (ispmgr)
* * * * *       /usr/local/mgr5/sbin/cron-ispmgr sbin/mgrctl -m ispmgr periodic >/dev/null 2>&1

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

В строке выше самого задания можно указать его описание, которое указывается в комментарии (строка с символами "##").

Пример использования

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

Создайте файл и добавьте в него следующие строки с помощью текстового редактора, например "nano":

nano /root/servtimetest
#! /bin/sh
date>> date-out.txt

Укажите корректные права для файла:

сhmod 775 /root/servtimetest

Перейдите в режим редактирование заданий CRON и создайте новое задание:

crontab -e
## save the system_date
*/2 * * * * 	/root/servtimetest >/dev/null 2>&1

После сохранения задания, каждые две минуты время сервера будет записываться в файле date-out.txt, который появится рядом со скриптом.

Посмотреть выполнение задания можно в системном журнале:

  • /var/log/syslog - для Debian-систем;
  • /var/log/messages - для RHEL-систем.

Экспорт и импорт списка заданий

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

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

crontab -l > <имя-файла>

 

Например, экспорт текущего списка заданий в файл по пути /root/exported-cron:

crontab -l > /root/exported-cron

 

ОБРАТИТЕ ВНИМАНИЕ!

При импорте новый список заданий заменит собой текущий!

 

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

crontab <имя-файла>

Например, импорт списка задач из файла /root/exported-cron:

crontab /root/exported-cron

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

  1. Экспортируйте текущий список заданий в отдельный файл:
    crontab -l > current-cron
  2. Выполните слияние файлов текущего и импортируемого списков с помощью утилиты “cat”:
    cat current-cron exported-cron > merged-cron
  3. Импортируйте объединенный список:
    crontab merged-cron