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 — задает временной интервал, в течение которого будут запускаться задания (т.е. задания будут выполнятся только в течение следующих часов).