Анализ на компонентите на cron израза
Инструментът за парсване на cron изрази приема едноредов текстов вход и го разделя на неговите съставни елементи, за да покаже значението на всяка част от графика. Стандартният cron синтаксис се състои от точно 5 полета, подредени в следната последователност:
- Минута (
Минута): Определя минутата от часа за изпълнение на задачата. - Час (
Час): Определя часа от денонощието. - Ден от месеца (
Ден от месеца): Определя конкретната дата от месеца. - Месец (
Месец): Определя месеца от годината. - Ден от седмицата (
Ден от седмицата): Определя деня от седмицата.
Инструментът поддържа стандартни формати за всяко от тези полета, включително диапазони (например 1-5), стъпки (например */15), списъци (например 1,15), текстови имена на месеци (например JAN) и текстови имена на дни от седмицата (например MON). Поддържат се и стандартните съкращения за бързо въвеждане: @yearly, @monthly, @weekly, @daily и @hourly.
Когато в някое от полетата е въведен символът за заместване *, инструментът го разчита и показва като "Всеки". За конструкции от типа */n, разбивката визуализира специфичен текст в зависимост от полето: "Всеки {n} минути", "Всеки {n} часа", "Всеки {n} дни" (за ден от месеца или ден от седмицата) или "Всеки {n} месеца".
Разлики между стандартния синтаксис и разширенията
При работа с планировчици на задачи е важно да се прави разлика между стандартния 5-полеви cron синтаксис и различните софтуерни разширения. Този инструмент е проектиран да поддържа стриктно стандартния формат с 5 полета.
Инструментът не поддържа шесто поле за секунди, което се среща при някои съвременни системи за планиране. Също така не се поддържат специфични разширения, характерни за Quartz планировчика, като символите L (за последен ден от месеца или седмицата), W (за най-близкия работен ден) или # (за определяне на конкретен ден от седмицата в месеца, например втория вторник).
Взаимодействие между ден от месеца и ден от седмицата
Едно от най-важните правила в cron спецификацията засяга случаите, когато и двете полета — ден от месеца и ден от седмицата — са ограничени със специфични стойности (т.е. нито едно от тях не съдържа символа *).
В тази ситуация се прилага логическо обединение (оператор "ИЛИ"), а не сечение (оператор "И"). Това означава, че съвпадение по което и да е от двете полета е достатъчно за задействане на графика. Задачата ще се изпълни както на посочените дати от месеца, така и в посочените дни от седмицата, без да е необходимо двете условия да са изпълнени едновременно.
Валидация на несъществуващи графици и грешки
Инструментът извършва синтактична и логическа проверка на въведения израз в реално време. Ако входното поле е празно, инструментът се връща в начално състояние на готовност с надпис "Въведете cron израз, за да го анализирате.".
При откриване на грешки се прилагат следните правила:
- Ако cron изразът е синтактично неправилен, се извежда съобщението "Невалиден cron израз.".
- Ако изразът е синтактично валиден, но описва логически невъзможен график, се показва съобщението: "Този график никога не може да се изпълни — проверете за ден от месеца, който не съществува във всеки избран месец.".
Този тип грешка обикновено възниква, когато е зададен конкретен ден от месеца (например 31), но сред избраните месеци присъстват такива с по-малък брой дни, като април, юни, септември или ноември. Тъй като 31-во число не съществува във всеки от тези месеци, графикът се маркира като неизпълним.
Изчисляване на следващите изпълнения и часови зони
Освен текстовата разбивка на полетата, инструментът изчислява и показва списък с предстоящите времена на изпълнение на графика. Потребителят може да регулира броя на показваните бъдещи стартирания чрез числово поле за брой в диапазона от 1 до 20.
Всички изчислени времена за следващите изпълнения се показват в местната часова зона на Вашия браузър. Тъй като стандартният cron формат не съдържа в себе си информация за часова зона, планирането зависи изцяло от системното време на сървъра или средата, която изпълнява задачата. Поради тази причина визуализираните времена трябва да се разглеждат като проекция на графика спрямо Вашето местно време.
Поверителност и обработка на данните
Анализът на въведения cron израз и изчисляването на следващите времена на изпълнение се извършват изцяло локално във Вашия браузър. Вашият cron израз се анализира директно в браузъра Ви и никакви данни не се изпращат до сървърите на BroBroGo. Това гарантира, че конфигурациите на Вашите задачи остават поверителни и не напускат Вашето устройство.
Често задавани въпроси
Какъв cron синтаксис поддържа този инструмент?
Стандартен cron с 5 полета — минута, час, ден от месеца, месец и ден от седмицата — включително диапазони (1-5), стъпки (*/15), списъци (1,15), имена на месеци и дни от седмицата (JAN, MON), както и съкращенията @yearly/@monthly/@weekly/@daily/@hourly. Едно лесно за пропускане правило: когато и денят от месеца, и денят от седмицата са ограничени (различни от *), съвпадение по което и да е от двете е достатъчно — не е необходимо да съвпадат и двете едновременно.
В коя часова зона се показват следващите времена на изпълнение?
Местната часова зона на Вашия браузър — същата, която използва системният Ви часовник. Стандартният cron не съдържа собствена часова зона; планировчикът на задачи (job scheduler), който го изпълнява, определя това, така че разглеждайте тези времена като преглед на Вашия собствен местен график, а не задължително на този на сървъра.
Защо пише, че този график никога не може да се изпълни?
Обикновено това се дължи на стойност за ден от месеца, която не съществува във всеки избран месец — например 31-во число при избрани април, юни, септември или ноември. Изберете ден, който съществува във всички изброени месеци, или разделете графика на отделни cron изрази.