Русский

Инструменты разработчика · Генератор Crontab

anacron и cron.daily: как запланированные задания выживают, когда машина выключена

· Фон

хрон надежность планирование

Временная шкала расписания только на будущее, начинающаяся после перерыва в выключении питания.
Оригинальная векторная иллюстрация ToolAcre

cron предполагает, что машина всегда включена; Анакрон нет. В этом посте объясняется, как anacron отслеживает последний запуск, как его используют каталоги cron.daily в стиле Debian и как выбирать между ними.

Сценарий спящей машины находится за пределами браузера; предварительный просмотр ищет только будущих кандидатов

ToolAcre не может отслеживать, спал ли ноутбук через 06:25. Его функция следующего запуска получает начальный момент и выполняет поиск строго вперед, начиная на одну минуту позже. Более ранние соответствующие минуты не возвращаются, поскольку эта функция представляет собой предварительную версию будущего, а не механизм истории или восстановления.

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

Поведение внешнего cron при пропущенном запуске здесь не установлено.

В книге утверждается, что cron отбрасывает пропущенные минуты. Никакая реализация демона или тест работоспособности не являются частью этого репозитория, поэтому универсальное утверждение не повторяется. Доказано, что ToolAcre сам по себе не ставит задания в очередь: он вычисляет даты в памяти и возвращает их на страницу.

Целевой планировщик может документировать политику пропущенных запусков, а оболочка может добавить другую. Явно зафиксируйте эту политику. Одно и то же выражение `0 6 * * *` может участвовать в различных схемах восстановления без изменения ни одного из пяти его значений.

состояние анакрона и задержки не реализованы

В `cron.js` нет файла временной метки анакрона, счетчика периода или задержки запуска. Парсер знает поля календаря, а предварительный просмотр знает настраиваемый горизонт поиска. Ни один из них не сохраняет дату последнего завершения внешнего действия.

Поэтому эта статья не может объяснить точные переходы состояний Анакрона на основе данных проекта. Если необходимо наверстать упущенное, исследуйте и протестируйте существующий объект. ToolAcre по-прежнему может создавать любые строки cron с точным временем, сохраняемые рядом с ним, но не может проверять политику анакрона.

синтаксис anacrontab находится за пределами синтаксического анализатора с пятью полями

Строка анакронтаба не является выражением cron из пяти полей. Ввод периода, задержки и идентификатора в ToolAcre приведет к сбою подсчета полей или проверки значения, не раскрывая ничего о его реальном синтаксисе. Подобные цели планирования не подразумевают взаимозаменяемые форматы файлов.

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

Из этого репозитория невозможно определить проводку cron.daily.

Механизмы каталогов и передача обслуживания между пакетами отсутствуют в рассматриваемой кодовой базе. Генератор не может знать, существует ли `/etc/cron.daily`, какой исполнитель его вызывает или что происходит при установке другого пакета. Любая такая проводка является свидетельством воздействия окружающей среды.

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

Проработанная граница: сравнивайте будущих кандидатов, не обещая догнать

Для ежедневного примера введите `0 6 * * *` и выберите зону развертывания. В предварительном просмотре перечислено до пяти будущих кандидатов на настенные часы 06:00. Если момент запуска уже прошел сегодняшнее 06:00, первым результатом станет завтрашний день. Это предусмотрительное поведение, а не свидетельство того, что произошло сегодня утром.

Используйте список, чтобы проверить намерение календаря и преобразование зоны. Затем выключите и приостановите безопасную тестовую среду на запланированное время и соблюдайте фактическую политику планировщика. Два эксперимента отвечают на разные вопросы и должны документироваться отдельно.

Постоянное поведение таймера не проверено и опущено.

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

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

Вывод: соедините расписание с отдельно проверенной политикой в ​​отношении пропущенных запусков.

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

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