Поиск по сайту:

Cron против Anacron: как планировать задания с помощью Anacron в Linux


В этой статье мы объясним cron и anacron, а также покажем, как настроить anacron в Linux. Мы также рассмотрим сравнение этих двух утилит.

Чтобы запланировать задачу на заданное или более позднее время, вы можете использовать команды «at» или «batch», а чтобы настроить повторный запуск команд, вы можете использовать команду < средства Strong>cron и anacron.

Cron – это демон, используемый для запуска запланированных задач, таких как резервное копирование системы, обновления и многое другое. Он подходит для запуска запланированных задач на машинах, которые будут работать непрерывно 24 часа в сутки, 7 дней в неделю, например на серверах.

Команды/задачи записываются в задания cron, которые запланированы в файлах crontab. Системный файл crontab по умолчанию — /etc/crontab, но каждый пользователь также может создать свой собственный файл crontab, который может запускать команды в определенное пользователем время.

Чтобы создать личный файл crontab, просто введите следующее:

crontab -e

Как настроить Анакрон в Linux

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

Он подходит для запуска ежедневных, еженедельных и ежемесячных запланированных заданий, которые обычно выполняются с помощью cron, на машинах, которые не будут работать круглосуточно, 7 дней в неделю, таких как ноутбуки и настольные компьютеры.

Предположим, у вас есть запланированное задание (например, скрипт резервного копирования), которое нужно запускать с помощью cron каждую полночь, возможно, когда вы спите, а ваш рабочий стол/ноутбук к этому времени выключен. Ваш сценарий резервного копирования не будет выполнен.

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

Как Анакрон работает в Linux

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

period   delay   job-identifier   command

Из приведенного выше формата:

  • период – это частота выполнения задания, указанная в днях или как @daily, @weekly или @monthly один раз в день, неделю или месяц. Вы также можете использовать цифры: 1 – ежедневно, 7 – еженедельно, 30 – ежемесячно и N – количество дней.
  • задержка – количество минут ожидания перед выполнением задания.
  • job-id – это отличительное имя задания, записанное в файлах журналов.

Чтобы просмотреть файлы примеров, введите:

ls -l /var/spool/anacron/

total 12
-rw------- 1 root root 9 Jun  1 10:25 cron.daily
-rw------- 1 root root 9 May 27 11:01 cron.monthly
-rw------- 1 root root 9 May 30 10:28 cron.weekly
  • команда – это команда или сценарий оболочки, который необходимо выполнить.
Вот что происходит на практике:
  • Анакрон проверит, было ли выполнено задание в течение указанного периода в поле периода. В противном случае он выполняет команду, указанную в поле команды, после ожидания количества минут, указанного в поле задержки.
  • После выполнения задания оно записывает дату в файл метки времени в каталоге /var/spool/anacron с именем, указанным в поле идентификатора задания (имя файла метки времени).

Давайте теперь посмотрим на пример. При этом скрипт /home/aaronkilik/bin/backup.sh будет запускаться каждый день:

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

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

В файле anacrontab есть две важные переменные, которые вам следует понять:

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

Вот как мог бы выглядеть ваш файл anacrontab.

/etc/anacrontab: configuration file for anacron

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

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
HOME=/root
LOGNAME=root

These replace cron's entries
1       5       cron.daily      run-parts --report /etc/cron.daily
7       10      cron.weekly     run-parts --report /etc/cron.weekly
@monthly        15      cron.monthly    run-parts --report /etc/cron.monthly

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

Ниже приведено сравнение cron и anacron, чтобы помочь вам понять, когда использовать любой из них.

It’s a daemon

Это не демон

Appropriate for server machines

Подходит для настольных компьютеров/ноутбуков.

Enables you to run scheduled jobs every minute

Позволяет выполнять только запланированные задания ежедневно.

Doesn’t executed a scheduled job when the machine if off

Если машина выключена во время выполнения запланированного задания, она выполнит запланированное задание при следующем включении машины.

Can be used by both normal users and root

Может использоваться только пользователем root, если не указано иное (включено для обычных пользователей с определенными конфигурациями)

Основное различие между cron и anacron заключается в том, что cron эффективно работает на машинах, которые будут работать непрерывно, хотя anacron предназначен для машин, которые будут отключены через день или неделю.

Если вы знаете какой-либо другой способ, поделитесь с нами, используя форму комментариев ниже.