Anacron - планировщик задач

Anacron - планировщик задач


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

  • /sbin/service anacron start

Чтобы остановить anacrontab нужно выполнить команду:

  • /sbin/service anacron stop

Запуск anacrontab:

  • ~$ sudo pluma /etc/anacrontab

Программа anacron, как и cron, используется для настройки команд на многократное или регулярное выполнение.

Cron — это служба, используемая для запуска запланированных задач. Cron хорошо подходит для запуска запланированных задач на машинах, которые будут работать непрерывно 24/7, таких как серверы. Причём, если в запланированное время компьютер будет выключен, задача выполнена не будет.

Anacron — асинхронный или анахроничный cron. Используется для периодического запуска команд с частотой, определенной в днях. Его работа несколько отличается от работы cron, предполагая, что машина не будет включена все время.

Anacron подходит для выполнения ежедневных, еженедельных и ежемесячных запланированных заданий на ноутбуках или ПК. Если используется anacron, можно быть уверенным, что при следующем включении компьютера или ноутбука запланированная задача обязательно будет выполнена.

Описание работы

В РЕД ОС есть man-страница с информацией по использованию и применению anacron, вызываемая командой:

  • man anacron

Утилита anacron, как и cron, имеет таблицу планирования. Задания anacron перечислены в файле /etc/anacrontab, их можно запланировать в следующем формате (комментарии внутри файла anacrontab должны начинаться с #):

#period delay job-identifier command

где:

period – это частота выполнения задания, указанная в днях или в виде: @daily, @weekly или @monthly для одного раза в день, неделю или месяц соответственно. Также можно использовать числа: 1 – ежедневно, 7 – еженедельно, 30 – ежемесячно и N – количество дней;

delay – это количество минут ожидания перед выполнением задания. Желательно для каждого задания указывать разное время, чтобы несколько заданий не запускались одновременно;

job-id – это отличительное имя для задания, записанное в файлах журнала. Это имя используется для создания файла контроля задания. Файл создаётся в папке /var/spool/anacron/ и содержит сведения, позволяющие программе anacron контролировать выполнение задания;

command – это команда или путь к сценарию оболочки, который будет выполнен.

Anacron использует не такие подробные параметры, как cron. Наименьший интервал, который существует в anacron – день. Это значит, что anacron нужно использовать как дополнение к cron, а не в качестве его замещения.

Anacron имеет следующий принцип работы — он проверяет, выполнено ли задание за указанный период в поле period. Если нет, anacron выполняет команду из поля command после ожидания определенного количества минут (delay).

После выполнения задания anacron записывает дату в файл метки времени в каталоге /var/spool/anacron с именем, указанным в поле id задания (имя файла метки времени).

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

Приведенный пример будет запускать скрипт /home/user/backup.sh каждый день:

#period delay job-identifier command

@daily 10 example.daily /bin/bash /home/user/backup.sh

Если машина выключена, когда ожидается выполнение задания backup.sh, anacron запустит выполнение этого задания через 10 минут после следующего включения машины, не ожидая еще 7 дней.

Файл настроек

В файле anacrontab, кроме запланированных заданий, также есть важные переменные, которые необходимо понимать:

cat /etc/anacrontab

# /etc/anacrontab: configuration file for anacron

# See anacron(8) and anacrontab(5) for details.

SHELL=/bin/sh

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

MAILTO=root

# the maximal random delay added to the base delay of the jobs

RANDOM_DELAY=45

# the jobs will be started during the following hours only

START_HOURS_RANGE=3-22

#period in days delay in minutes job-identifier command

1 5 cron.daily nice run-parts /etc/cron.daily

7 25 cron.weekly nice run-parts /etc/cron.weekly

@monthly 45 cron.monthly nice run-parts /etc/cron.monthly

  • RANDOM_DELAY — определяет максимальную случайную задержку в минутах, добавляемую к пользовательской задержке задания (по умолчанию 45 мин);

  • START_HOURS_RANGE — задает временной интервал, в течение которого будут запускаться задания (т.е. задания будут выполнятся только в течение следующих часов).