Parser för cron-uttryck

Formatera: minut timme day-of-month månad day-of-week

Du ärver en crontab och den är full av 0 */2 * * 1-5, 15 4 1 * *, */30 8-18 * * *. Den här parsern tar ett standardmässigt cron-uttryck med 5 fält och returnerar en beskrivning på enkel engelska (“every 2 hours on weekdays”) plus de 5 nästa tider den faktiskt kommer att köra. Användbart för att förstå äldre scheman och verifiera ett nytt innan du driftsätter det.

Så tolkar du ett cron-uttryck

  1. 1

    Klistra in uttrycket

    Ett standardmässigt uttryck med 5 fält (`* * * * *`): minut, timme, dag i månad, månad och veckodag.

  2. 2

    Läs den engelska beskrivningen

    Parsern skriver om varje fält på enkel engelska, till exempel "At minute 0, every 2 hours, on day(s) of week 1-5."

  3. 3

    Verifiera med förhandsvisningen av nästa körning

    5 kommande körtider. Om de inte stämmer med din avsikt, förfina uttrycket.

  4. 4

    Åtgärda ogiltiga fält

    Uttryck med fel antal fält eller värden utanför intervallet avvisas med ett fel som anger det problematiska fältet.

Avkoda varje fält

Varje fält har sitt eget giltiga intervall och specialtecken:

Fält Intervall Jokertecken som stöds
Minut 0-59 * , - /
Timme 0-23 * , - /
Dag i månad 1-31 * , - /
Månad 1-12 * , - /
Veckodag 0-7 * , - /
  • * = varje värde (* i minutfältet betyder varje minut).
  • 1,5,10 = en lista av värden.
  • 1-5 = ett intervall av värden.
  • */15 eller 0-45/15 = ett steg, räknat från början av fältets intervall.
  • Veckodag 0 och 7 betyder båda söndag, så båda konventionerna accepteras. Namn på månader och dagar som JAN eller MON accepteras inte; använd siffror.

Exempel avkodade

Uttryck På engelska
0 */2 * * 1-5 At minute 0 every 2 hours, Monday through Friday
15 4 1 * * At 04:15 on the 1st day of every month
*/30 8-18 * * * Every 30 minutes between 08:00 and 18:59
0 0 1,15 * * At midnight on the 1st and 15th of every month
0 22 * * 0 At 22:00 every Sunday

Vad parsern accepterar

  • Exakt 5 fält: minut, timme, dag i månad, månad och veckodag. Quartz-uttryck med 6 eller 7 fält (med sekunder eller år) avvisas.
  • Giltiga intervall: varje värde måste rymmas i sitt fält, till exempel minut 0-59, timme 0-23, dag i månad 1-31, månad 1-12 och veckodag 0-7.
  • Positiva steg: värdet efter / måste vara ett positivt tal (*/0 avvisas).
  • Inga namngivna genvägar: @daily, @reboot och liknande genvägar accepteras inte. Utöka dem först till sin form med 5 fält (till exempel @daily = 0 0 * * *).

Dag i månad och veckodag kombinerade

När både dag i månad och veckodag är satta schemalägger den här parsern en körning bara när båda stämmer, så 0 0 1 * MON körs bara när den 1:a är en måndag. De flesta Linux-cron-implementationer behandlar däremot de två fälten som ELLER (jobbet körs när något av dem stämmer). Dubbelkolla därför uttrycket mot den schemaläggare du faktiskt använder.

Notering om tidszon

Tiderna i förhandsvisningen beräknas med serverns klocka, som går i UTC. Om din crontab körs på en maskin med en annan tidszon kan tiderna här skilja sig från tiderna på den maskinen.

Vanliga frågor

Nej. Endast standardmässiga uttryck med 5 fält accepteras. Quartz-uttryck med sekunder (6 fält) eller med år (7 fält) avvisas med ett fel.

Vanligtvis en av dessa orsaker: förhandsvisningen använder serverns klocka i UTC medan din crontab körs i en annan tidszon, både dag i månad och veckodag är satta (den här parsern kräver att båda stämmer), eller ett stegvärde som börjar om vid varje timme eller dag.

Ja, om det är ett standardmässigt uttryck med 5 fält, vilket Kubernetes använder (UTC som standard). Tänk på att förhandsvisningen här använder serverns klocka i UTC: om klustret körs i en annan tidszon kan tiderna skilja sig.

Linux-cron accepterar namngivna genvägar: @reboot (vid uppstart), @yearly / @annually (0 0 1 1 *), @monthly, @weekly, @daily, @hourly. Den här parsern accepterar dem inte, så utöka genvägen till sitt motsvarande uttryck med 5 fält innan du klistrar in det här.

Relaterade verktyg

Verktyget finns på andra språk