Работа с планировщиком заданий 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
Иногда может потребоваться добавить задания из файла к текущим - в этом случае поможет слияние списков заданий с последующим импортом. Для этого выполните следующие действия:
- Экспортируйте текущий список заданий в отдельный файл:
crontab -l > current-cron
- Выполните слияние файлов текущего и импортируемого списков с помощью утилиты “cat”:
cat current-cron exported-cron > merged-cron
- Импортируйте объединенный список:
crontab merged-cron