Что такое anacron linux

Обновлено: 21.11.2024

Anacron используется для периодического выполнения команд с периодичностью, указанной в днях. В отличие от cron, он не предполагает, что машина работает непрерывно. Следовательно, его можно использовать на машинах, которые не работают 24 часа в сутки, для управления обычными заданиями как ежедневными, еженедельными и ежемесячными. Anacron пытается запускать запланированные задания настолько близко, насколько это позволяет время безотказной работы системы.

файл конфигурации анакрона

/etc/anacrontab — это файл конфигурации anacron. Ниже приведен пример неотредактированного файла анакрона:

Здесь:
1. период в днях: указывает частоту выполнения задания в днях. Эта переменная может быть представлена ​​целым числом или макросом (@daily, @weekly, @monthly), где @daily означает то же значение, что и целое число 1, @weekly — то же, что и 7, а @monthly указывает, что задание выполняется. раз в месяц, независимо от продолжительности месяца.
2. задержка в минутах: указывает количество минут, в течение которых anacron ожидает, если это необходимо, перед выполнением задания. Эта переменная представлена ​​целым числом, где 0 означает отсутствие задержки.
3. идентификатор задания: указывает уникальное имя задания, которое используется в файлах журнала.
4. команда: указывает команду для выполнения. Это может быть либо команда, такая как ps -ef >> /tmp/processes, либо команда для выполнения пользовательского сценария.

Три строки в конце файлов конфигурации — это системные задания cron.

Остальные переменные объяснены в примере ниже.

Пример конфигурации анакрона

Давайте рассмотрим пример настройки anacron. Мы создаем задание anacron для ежедневного запуска сценария «daily_job.sh» с задержкой в ​​35 минут после загрузки системы.

Если система запущена, задание будет выполняться в соответствии с START_HOURS_RANGE, которое определено в файле /etc/anacrontab. Переменная START_HOURS_RANGE определяет диапазон часов, в течение которых разрешено выполнение запланированного заданияb. В нашем случае это 10 утра. до 18:00 (10–18)

Переменная RANDOM_DELAY обозначает максимальное количество минут, которое будет добавлено к переменной задержки в минутах, указанной для каждого задания. Таким образом, RANDOM_DELAY, установленный на 30, будет случайным образом добавлять от 0 до 30 минут к задержке в минутах для каждого задания в этом конкретном анакронтабе. При значении 0 случайная задержка не добавляется.

Команда anacron используется для периодического выполнения команд с периодичностью, указанной в днях. Его главное преимущество перед cron заключается в том, что его можно использовать на машине, которая не работает постоянно. В cron, если машина не работает во время запланированного задания, она пропустит его, но anacron немного отличается, так как он сначала проверяет временную метку задания, а затем решает, запускать его или нет, и если его временная метка >= n(n – определенное количество дней), а затем запускает его после указанной временной задержки.

    /etc/anacrontab: содержит спецификации задания.

  • См. строку SHELL=/bin/sh. Он использует sh, а не bash, вы не можете запускать сценарии bash.
  • Таблица в конце представляет другое расписание. В первом столбце указано количество дней (n), т. е. период, а во втором – время задержки в минутах.

Синтаксис:

Параметры:

  • f : используется для принудительного выполнения заданий без учета временных меток.
  • u : обновите временные метки заданий только до текущей даты, но ничего не запускайте.
  • s : сериализовать выполнение заданий. Anacron не начнет новое задание до завершения предыдущего.
  • n : Запускайте задания сейчас. Не обращайте внимания на любые задержки.
  • d : Не переходить в фоновый режим. В этом режиме Anacron будет выводить информационные сообщения в стандартную ошибку, а также в системный журнал. Вывод заданий рассылается по почте, как обычно.
  • q : Подавить сообщения стандартной ошибки. Применимо только с -d.
  • V (использовать указанный анакронтаб): вывести информацию о версии и выйти.
  • h (использовать указанный анакронтаб): вывести короткое сообщение об использовании и выйти.

    Вы можете добавить любой скрипт в директорию etc/cron.daily, etc/cron.weekly или cron.monthly. Но помните, что скрипт должен быть sh, а не bash.

    Изменение временной метки заданий. Наблюдайте за изменением значений отметки времени.

Примечание. Здесь мы использовали параметр -d со всеми командами для отображения на экране того, что на самом деле происходит.

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

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

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

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

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

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

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

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

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

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

Как Anacron работает в Linux

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

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

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

  • command — это команда или сценарий оболочки, который необходимо выполнить.
Вот что происходит на практике:
  • Anacron проверит, было ли задание выполнено в течение периода, указанного в поле периода. Если нет, он выполняет команду, указанную в поле команды, после ожидания количества минут, указанного в поле задержки.
  • После выполнения задания оно записывает дату в файл временной метки в каталоге /var/spool/anacron с именем, указанным в поле job-id (имя файла временной метки).

А теперь рассмотрим пример. Это будет запускать скрипт /home/aaronkilik/bin/backup.sh каждый день:

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

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

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

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

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

td>
Cron Anacron
Это демон Это не демон
Подходит для серверных машин Подходит для компьютеров/ноутбуков
Позволяет запускать запланированные задания каждую минуту Позволяет запускать запланированные задания только ежедневно
Не выполнять запланированное задание, когда машина выключенаЕсли машина выключена во время запланированного задания, она выполнит запланированное задание, когда машина будет включена в следующий раз
Может использоваться как обычные пользователи, так и root Может использоваться только пользователем root, если не указано иное (включено для обычных пользователей с определенными конфигурациями)

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

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

Если вам понравилась эта статья, подпишитесь на уведомления по электронной почте о руководствах по Linux. Если у вас есть вопросы или сомнения? обратитесь за помощью в разделе комментариев.

Если вы цените то, что мы делаем здесь, в TecMint, вам следует подумать о следующем:

TecMint – это самый быстрорастущий и пользующийся наибольшим доверием сайт сообщества, где можно найти любые статьи, руководства и книги по Linux в Интернете. Миллионы людей посещают TecMint! для поиска или просмотра тысяч опубликованных статей, доступных всем БЕСПЛАТНО.

Если вам нравится то, что вы читаете, купите нам кофе (или 2) в знак признательности.

Мы благодарны за вашу бесконечную поддержку.

Похожие записи

9 мыслей о «Cron против Anacron: как планировать задания с помощью Anacron в Linux»

@daily и @weekly не работают в последних версиях Ubuntu. Вместо этого используйте период `1` или `7`.

Пожалуйста, исправьте это в своей статье, есть вопросы по обмену стеками от людей, которые сталкивались с этим, возможно, эти вопросы от людей, которые запутались после прочтения вашей статьи. По крайней мере, я был.

(Кроме того, 30 *не* то же самое, что и `ежемесячно`, по этой причине псевдоним существует для месячных, а не для еженедельных/ежедневных)

Спасибо за пояснение, я обновлю статью с последними изменениями в Ubuntu…

Я никогда не пойму:

  1. Почему нельзя было добавить дополнительные функции anacron в cron вместо создания anacron.
  2. Почему пользователи Linux так любят эти странные файлы конфигурации. Почему бы не использовать формат JSON? Или что-то более структурированное.
  3. Почему они не могли заставить anacron поддерживать более высокое «разрешение», как это делает cron, вместо того, чтобы использовать день в качестве максимального временного шага.

Вы совершенно правы во всем этом.

Я использую Void Linux и вообще не использую cron (он даже не установлен).

Я создаю сервис и планирую его с помощью повтора — таким должен быть cron.

Спасибо за это, это действительно полезно!

Спасибо за это, я нашел это действительно полезным! Один комментарий, вы уверены, что @daily работает? Я думал, что @monthly — единственная строка такого типа, поддерживаемая anacron, и когда я проверил синтаксис файла anacrontab с помощью флага -T и задания @daily, эта строка ему не понравилась, и он просто пропустил ее. Установление периода работы с 1 вместо @daily work.

@daily работает, поддерживает планирование ежедневных задач. Если вы запланировали задачу с помощью @daily, и она не сработала, возможно, вы неправильно ее настроили. Но мы узнаем больше о вашей проблеме. Спасибо, что понравилась эта статья.

Просто подтверждаю, что теперь это работает и для меня, у меня была ошибка в другом месте. Спасибо!

Хорошо, это здорово! Большое спасибо, что следите за нами.

Есть что сказать? Присоединяйтесь к обсуждению. Отменить ответ

Этот сайт использует Akismet для уменьшения количества спама. Узнайте, как обрабатываются данные ваших комментариев.

В 2021 году людей любят Linux больше, чем когда-либо прежде. В этой серии я расскажу о 21 причине использования Linux. Автоматизация — одна из лучших причин для использования Linux.

Что мне больше всего нравится в Linux, так это готовность работать за меня. Вместо того, чтобы выполнять повторяющиеся задачи, которые отнимают у меня время, или могут привести к ошибкам, или о которых я могу забыть, я планирую, чтобы Linux выполнял их за меня.

Подготовка к автоматизации

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

1. Что вы хотите сделать?

Во-первых, определите, какой результат вы хотите получить. Вы ставите водяные знаки на изображения? Удаление файлов из загроможденного каталога? Выполняете резервное копирование важных данных? Четко определите для себя задачу, чтобы знать, к чему стремиться. Если есть какая-то задача, которую вы выполняете каждый день, а тем более чаще одного раза в день, то она может быть кандидатом на автоматизацию.

2. Узнайте, какие приложения вам нужны

Дополнительные ресурсы по Linux

Разбивайте большие задачи на мелкие компоненты и научитесь получать каждый результат вручную, но повторяемым и предсказуемым образом. Многое из того, что можно сделать в Linux, можно написать в сценарии, но важно осознавать свои текущие ограничения. Существует огромная разница между изучением того, как автоматизировать изменение размера нескольких изображений, чтобы их можно было удобно отправить по электронной почте, и использованием машинного обучения для создания сложных иллюстраций для вашего еженедельного информационного бюллетеня.Одной из этих вещей вы можете научиться за полдня, а на другую могут уйти годы. Однако всем нам нужно с чего-то начинать, так что начинайте с малого и всегда ищите способы стать лучше.

3. Автоматизируйте это

Используйте инструмент автоматизации в Linux, чтобы это происходило регулярно. Этому шагу посвящена эта статья!

Чтобы что-то автоматизировать, вам нужен скрипт, автоматизирующий задачу. При тестировании лучше не усложнять задачу, поэтому в этой статье автоматизируется задача создания файла hello в каталоге /tmp:

Скопируйте и вставьте этот простой скрипт в текстовый файл и назовите его example .

Встроенное решение для автоматизации, которое входит в состав каждой установки Linux, — это система cron. Пользователи Linux, как правило, относятся к cron в общем как к методу, который вы используете для планирования задачи (обычно называемой «заданием cron»), но есть несколько приложений, которые обеспечивают функциональность cron. Самый универсальный — это cronie; его преимущество в том, что он не предполагает, что ваш компьютер всегда включен, как это делают исторические приложения cron, разработанные для системных администраторов.

Проверьте, какую систему cron предоставляет ваш дистрибутив Linux. Если это не cronie, вы, вероятно, можете установить cronie из репозитория программного обеспечения вашего дистрибутива. Если в вашем дистрибутиве нет пакета для cronie, вы можете вместо него использовать старый пакет anacron. Команда anacron включена в cronie, поэтому независимо от того, как вы ее приобрели, вы должны убедиться, что команда anacron доступна в вашей системе, прежде чем продолжить. В зависимости от настроек Anacron могут потребоваться права администратора root.

Работа Anacron заключается в обеспечении регулярного выполнения ваших заданий по автоматизации. Для этого anacron проверяет, когда в последний раз запускалось задание, а затем проверяет, как часто вы указывали ему запускать задания.

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

Задания Cron

Многие системы Linux поставляются в комплекте с несколькими заданиями обслуживания, которые выполняет cron. Мне нравится отделять свои задания от системных заданий, поэтому я создаю каталог в своем домашнем каталоге. В частности, есть скрытая папка с именем ~/.local («локальная» в том смысле, что она настроена для вашей учетной записи пользователя, а не для вашей «глобальной» компьютерной системы), поэтому я создаю подкаталог etc/cron.daily, чтобы отразить обычную папку cron. дома в моей системе. Вы также должны создать каталог спула, чтобы отслеживать время последнего запуска заданий.

Вы можете поместить любой скрипт, который хотите регулярно запускать, в каталог ~/.local/etc/cron.daily. Скопируйте пример скрипта в каталог сейчас и пометьте его как исполняемый с помощью команды chmod.

Затем настройте anacron для запуска любых скриптов, расположенных в каталоге ~/.local/etc/cron.daily.

Анакрон

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

Чтобы настроить anacron для запуска заданий cron, создайте файл конфигурации в /.local/etc/anacrontab :

Этот файл указывает Anacron запускать все исполняемые скрипты ( run-parts ), найденные в ~/.local/etc/cron.daily, каждый день (то есть ежедневно) с нулевой минутной задержкой. Иногда используется задержка в несколько минут, чтобы ваш компьютер не загружался всеми возможными задачами сразу после входа в систему. Однако эти настройки подходят для тестирования.

Значение cron.mine представляет собой произвольное имя процесса. Я называю его cron.mine, но вы можете называть его cron.personal или penguin или как угодно.

Проверьте синтаксис файла анакронтаба:

Молчание означает успех.

Добавление анакрона в .profile

Наконец, вы должны убедиться, что anacron работает с вашей локальной конфигурацией. Поскольку вы запускаете anacron как обычный пользователь, а не как пользователь root, вы должны направить его к своим локальным конфигурациям — файл anacrontab сообщает anacron, что делать, а каталог спулинга помогает anacron отслеживать, сколько дней прошло с тех пор. каждое задание выполнялось последним:

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

Проверка работы cron

Теперь, когда все настроено, вы можете протестировать задание. Технически вы можете проверить это без перезагрузки, но имеет смысл перезагрузиться, потому что это то, для чего он предназначен: прерванные и нерегулярные сеансы входа в систему. Уделите время перезагрузке компьютера, войдите в систему и найдите тестовый файл:

Предполагая, что файл существует, ваш пример сценария успешно выполнен.Теперь вы можете удалить параметры теста из ~/.profile , оставив это в качестве окончательной конфигурации:

Использование анакрона

У вас настроена личная инфраструктура автоматизации, поэтому вы можете поместить любой сценарий, которым должен управлять ваш компьютер, в каталог ~/.local/etc/cron.daily, и он будет выполняться по расписанию.

Вы сами решаете, как часто должны выполняться задания. Ваш пример скрипта выполняется один раз в день. Очевидно, это зависит от того, включен ли ваш компьютер и бодрствует ли он в любой день. Если вы используете свой компьютер в пятницу, но отложите его на выходные, сценарий не будет работать в субботу и воскресенье. Однако в понедельник скрипт выполнится, потому что anacron будет знать, что прошел как минимум один день. Вы можете добавить еженедельные, двухнедельные или даже ежемесячные каталоги в ~/.local/etc, чтобы запланировать самые разные интервалы.

Чтобы добавить новый интервал:

  1. Добавьте каталог в ~/.local/etc (например, cron.weekly ).
  2. Добавьте строку в ~/.local/etc/anacrontab для запуска скриптов в новом каталоге. Для недельного интервала конфигурация будет следующей:

(значение 0 может указывать на некоторое количество минут, чтобы вежливо отложить запуск скрипта).

Добро пожаловать в автоматизированный образ жизни. Это не будет похоже на это, но вы станете намного продуктивнее.

Anacron используется для периодического выполнения команд с периодичностью, указанной в днях. В отличие от cron(8), он не предполагает, что машина работает непрерывно. Следовательно, его можно использовать на компьютерах, которые не работают круглосуточно, для управления обычными заданиями как ежедневными, еженедельными и ежемесячными.

Anacron считывает список заданий из файла конфигурации /etc/anacrontab (см. anacrontab(5)). Этот файл содержит список заданий, которыми управляет Anacron. Каждая запись задания указывает период в днях, задержку в минутах, уникальный идентификатор задания и команду оболочки.

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

После завершения команды Anacron записывает дату в специальный файл временных меток для этого задания, чтобы знать, когда выполнить его снова. Для расчета времени используется только дата. Час не используется.

Когда больше нет заданий для запуска, Anacron завершает работу.

Anacron рассматривает только задания, идентификатор которых, указанный в anacrontab, соответствует любому из аргументов командной строки job. Аргументы job могут быть шаблонами подстановочных знаков оболочки (обязательно защитите их от вашей оболочки с помощью соответствующих кавычек). Отсутствие аргументов job эквивалентно указанию "*" (то есть будут учитываться все задания).

Если не указана опция -d (см. ниже), Anacron переходит в фоновый режим при запуске, и родительский процесс немедленно завершается.

Если не указаны параметры -s или -n, Anacron запускает задания сразу же после окончания их задержки. Выполнение различных заданий полностью независимо.

Если задание генерирует какие-либо выходные данные в своем стандартном выводе или стандартную ошибку, выходные данные отправляются по почте пользователю, запустившему Anacron (обычно root), или по адресу, указанному в переменной среды MAILTO в crontab, если таковой существует. Если установлена ​​переменная среды LOGNAME, она будет использоваться как поле From:.

Информационные сообщения о том, что делает Anacron, отправляются в syslogd(8) или rsyslogd(8) с помощью средства cron, уведомление о приоритете. Сообщения об ошибках отправляются с приоритетом ошибки.

«Активные» задания (т. е. задания, которые Anacron уже решил запустить и теперь ждет, пока пройдет их задержка, и задания, которые в настоящее время выполняются Anacron), «заблокированы», чтобы другие копии Anacron не могли запускать их одновременно.

Параметры

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

Только обновите временные метки заданий до текущей даты, но ничего не запускайте.

Сериализировать выполнение заданий. Anacron не начнет новое задание до завершения предыдущего.

Выполнить задания сейчас. Игнорируйте спецификации задержки в файле /etc/anacrontab. Эта опция подразумевает -s.

Не переходить в фоновый режим. В этом режиме Anacron будет выводить информационные сообщения в стандартную ошибку, а также в системный журнал. Вывод заданий рассылается как обычно.

Подавлять сообщения стандартной ошибки. Применимо только с -d. -t some_anacrontab Использовать указанный анакронтаб вместо стандартного -T

Тестирование анакронтаба. Файл конфигурации будет проверен на достоверность. Если в файле есть ошибка, будет показана ошибка, и anacron вернет 1. Действительные anacrontabs вернут 0. -S spooldir Использовать указанный spooldir для хранения временных меток. Эта опция требуется для пользователей, которые хотят запускать anacron самостоятельно. . -V

Распечатать информацию о версии и выйти.

Распечатать короткое сообщение об использовании и выйти.

Сигналы

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

Примечания

Перед запуском Anacron убедитесь, что часовой пояс установлен правильно. (Часовой пояс влияет на дату). Обычно это достигается установкой переменной среды TZ или установкой файла /usr/lib/zoneinfo/localtime. См. tzset(3) для получения дополнительной информации.

Файлы временных меток создаются в каталоге буфера для каждого задания в anacrontab. Анакрон никогда не удаляет их автоматически, и их следует удалять вручную, если задание больше не запланировано.

Файлы

/etc/anacrontab Содержит спецификации заданий. См. полное описание в anacrontab(5). /var/spool/anacron Этот каталог используется Anacron для хранения файлов временных меток.

См. также

Файл Anacron README.

Anacron никогда не удаляет файлы временных меток. Удалите неиспользуемые файлы вручную.

Anacron использует до двух файловых дескрипторов для каждого активного задания. Дескрипторы могут закончиться, если активных заданий больше 125 (на обычных ядрах).

Читайте также: