Русский

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

Поля crontab(5): что указывает POSIX и что такое расширение Vixie

· Фон

хрон портативность проверка

Грамматическая карточка из пяти столбцов с принятыми жетонами и охраняемой границей.
Оригинальная векторная иллюстрация ToolAcre

Не все функции cron являются стандартными. В этом посте мы отделяем требования спецификации POSIX crontab от расширений (шагов, имен, псевдонимов), добавленных Vixie cron и принимаемых большинством систем Linux.

Допустимое выражение ToolAcre может по-прежнему не поддерживаться другим планировщиком.

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

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

В репозитории не установлено, что требуется POSIX.

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

Реализованные числовые диапазоны: 0–59 минут, 0–23 часов, 1–31 дней месяца, 1–12 месяцев и 0–7 будние дни. Подстановочные знаки, одиночные значения, включающие диапазоны, списки с запятыми, шаги с подстановочными знаками, шаги диапазона и простое начальное значение с шагом — все они анализируются и проверяются.

Имена, шаги, воскресенье 7 и псевдонимы реализованы здесь без требования истории стандартов.

Названия месяцев с JAN по DEC и названия дней недели с SUN по SAT не чувствительны к регистру. Имена могут появляться отдельно, в списках и диапазонах. День недели 7 принимается за воскресенье и нормализуется до 0. Это наблюдаемые свойства `parseField`, независимо от того, как их классифицирует другая реализация.

Таблица псевдонимов расширяется `@yearly`, `@annually`, `@monthly`, `@weekly`, `@daily`, `@midnight` и `@hourly`. `@reboot` намеренно отклонен, поскольку у него нет календарного расписания для предварительного просмотра. Неизвестные слова со знаком at вызывают ошибку при указании поддерживаемого списка.

Поддержка назначения среды находится за пределами этого синтаксического анализатора.

Назначения среды не являются частью этой грамматики выражений. В поле ввода ожидается одно расписание, и `parseCron` разбивает его на пять частей после разрешения поддерживаемого псевдонима. Строку `KEY=value` нельзя проверить на расширение, цитирование или переносимость по этому маршруту.

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

Проверьте целевую грамматику и воспользуйтесь безобидным тестом по расписанию.

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

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

Рабочий пример: форма шага и явный список в соответствии с грамматикой ToolAcre.

Каждые пять минут ToolAcre принимает `*/5 * * * *`. Он также принимает явный список минут `0,5,10,15,20,25,30,35,40,45,50,55 * * * *`. Анализ расширяет оба поля минут до одних и тех же двенадцати значений, поэтому их кандидаты на следующий запуск соответствуют одному и тому же начальному моменту и зоне.

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

Синтаксис шести полей отклонен; его внешняя семантика здесь не документирована

Шестое поле не принимается. Ошибка предполагает, что стиль ведущих секунд принадлежит вводу Quartz или systemd, но синтаксический анализатор не реализует эти грамматики. В нем нет поля года и операторов `?`, `L`, `W` или `#`.

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

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

Переносимость — это сравнение, а не метка, встроенная в выражение. ToolAcre дает одну хорошо проверенную сторону: пять позиций, числовые границы, выбранные имена, составные диапазоны/lists/steps и семь псевдонимов. Это также дает явные отказы в отношении неправильных или иностранных форм.

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