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 предназначен для машин, которые будут отключены через день или неделю.
Если вы знаете какой-либо другой способ, поделитесь с нами, используя форму комментариев ниже.