Hur cron-uttryck tolkas och delas upp
Ett cron-uttryck är en kompakt textsträng som används för att schemalägga återkommande jobb i Unix-liknande operativsystem och moderna applikationsplattformar. Verktyget Cron-tolkare tar ett sådant uttryck och delar upp det i dess enskilda komponenter för att visa exakt vad varje del av schemat innebär.
Verktyget stöder standardisera syntaxer med 5 fält. När ett uttryck matas in delas det upp i följande fält under rubriken Schema-uppdelning:
- Minut: Det tolkade värdet för minut-fältet.
- Timme: Det tolkade värdet för timme-fältet.
- Dag i månaden: Det tolkade värdet för fältet för dag i månaden.
- Månad: Det tolkade värdet för månad-fältet.
- Veckodag: Det tolkade värdet för fältet för veckodag.
Genom att analysera dessa fält individuellt kan utvecklare, driftpersonal och teknisk support snabbt verifiera att en schemalagd uppgift kommer att köras vid exakt de tidpunkter som avses.
Tillåtna format och syntaxregler
För att verktyget ska kunna tolka uttrycket korrekt krävs ett standardiserat format med 5 fält. Följande notationer och specialtecken stöds vid inmatning i fältet Cron-uttryck:
- Intervall: Anges med bindestreck, till exempel
1-5för att markera ett kontinuerligt intervall. - Steg: Anges med snedstreck, till exempel
*/15för att köra med ett visst intervall. För dessa*/n-former visar verktyget beskrivningar som Var{n}:e minut, Var{n}:e timme, Var{n}:e dag, Var{n}:e månad eller Var{n}:e dag. - Listor: Anges med kommatecken, till exempel
1,15för att specificera flera enskilda tidpunkter. - Namngivna månader och veckodagar: Textbaserade förkortningar som
JANför januari ellerMONför måndag stöds. Ett exempel på ett giltigt uttryck med dessa är*/15 9-17 * * MON-FRI. - Jokerkort: Ett jokertecken
*i ett fält tolkas och visas som Varje. - Genvägar: Verktyget stöder även fördefinierade genvägar som ersätter de fem fälten helt:
@yearly,@monthly,@weekly,@dailyoch@hourly.
Det är viktigt att notera att detta verktyg är strikt utformat efter standarden med 5 fält. Det stöder inte ett sjätte fält för sekunder, och stöder inte heller Quartz-specifika tillägg som L, W eller #.
Särskilda regler och logiska undantag
När man konstruerar komplexa scheman finns det specifika logiska regler i cron-standarden som påverkar hur körningarna beräknas.
Den viktigaste regeln gäller förhållandet mellan dag i månaden och veckodag. När båda dessa fält är begränsade (det vill säga att inget av dem är satt till jokertecknet *), fungerar de med en ELLER-logik. Det innebär att det räcker med att ett av villkoren matchar för att schemat ska köras. Jobbet kommer alltså att köras om antingen den angivna dagen i månaden infaller, eller om den angivna veckodagen infaller.
Om inmatningsfältet lämnas tomt återgår verktyget till ett grundtillstånd där texten Ange ett cron-uttryck för att tolka det visas. Om uttrycket innehåller syntaktiska fel eller tecken som inte stöds, visar verktyget felmeddelandet Ogiltigt cron-uttryck.
Hantering av omöjliga scheman
En vanlig fallgrop när man skriver cron-uttryck är att skapa scheman som är logiskt giltiga rent syntaktiskt, men som i praktiken aldrig kan inträffa.
Om ett uttryck är syntaktiskt korrekt men representerar en omöjlig körning, visar verktyget felmeddelandet Detta schema kan aldrig inträffa – kontrollera om es finns en dag i månaden som inte existerar i alla valda månader. Detta inträffar vanligtvis när man anger dag 31 i fältet för dag i månaden, samtidigt som man har begränsat månaderna till att inkludera månader som endast har 30 dagar eller färre, såsom april, juni, september eller november. Eftersom den 31:a inte existerar i alla de valda månaderna kan schemat aldrig köras under dessa perioder.
Beräkning av kommande körningar och tidszoner
Förutom att bryta ner uttryckets beståndsdelar beräknar verktyget en lista över kommande körtider under rubriken Kommande körningar.
Antalet körningar som visas kan justeras med det numeriska inmatningsfältet Antal, vilket tillåter ett intervall från 1 till 20 kommande körningar. Bredvid rubriken visas texten (din lokala tid) för att indikera tidszonen.
Alla kommande körtider beräknas och visas i din webbläsares lokala tidszon. Eftersom standardisera cron-uttryck inte innehåller någon inbyggd information om tidszoner, är det systemet som kör jobbet som avgör vilken tidszon som tillämpas. De visade tiderna ska därför ses som en lokal förhandsgranskning baserad på din nuvarande systemklocka.
Lokal databehandling och integritet
När du använder detta verktyg sker all bearbetning och tolkning av ditt cron-uttryck lokalt i din webbläsare. Ingen information eller inmatad data skickas till BroBroGo. Detta innebär att analysen sker direkt på din enhet, vilket säkerställer att dina scheman och konfigurationer förblir privata i din egen webbläsarmiljö.
Vanliga frågor
Vilken cron-syntax stöder det här verktyget?
Standard cron med 5 fält – minut, timme, dag i månaden, månad och veckodag – inklusive intervall (1-5), steg (*/15), listor (1,15), namngivna månader och veckodagar (JAN, MON) samt genvägarna @yearly/@monthly/@weekly/@daily/@hourly. En regel som är lätt att missa: när både dag i månaden och veckodag är begränsade (inte *), räcker det med att ett av villkoren matchar – de behöver inte båda stämma.
Vilken tidszon visas de kommande körningarna i?
Din webbläsares lokala tidszon – samma som din systemklocka använder. Standard cron innehåller ingen egen tidszon; det är schemaläggaren som kör jobbet som bestämmer det. Se därför dessa tider som en förhandsgranskning av ditt eget lokala schema, inte nödvändigtvis serverns.
Varför står det att schemat aldrig kan inträffa?
Oftast beror det på ett dag-i-månaden-värde som inte finns i alla valda månader – till exempel den 31:a i kombination med april, juni, september eller november. Välj en dag som finns i alla angivna månader, eller dela upp schemat i separata uttryck.
Stöder verktyget sekunder eller Quartz-uttryck?
Nej, verktyget stöder inte ett sjätte fält för sekunder. Det stöder inte heller Quartz-specifika uttryck eller tecken som L, W eller #. Endast standardiserad 5-fälts-syntax kan tolkas.