Izračunati sljedeća izvršavanja cron izraza

analizira i prikazuje sljedeće datume izvršavanja cron konfiguracije

Što je cron izraz?

Cron izraz je kratki niz koji opisuje ponavljanje tijekom vremena. The format naslijeđen iz Unixa sadrži pet polja odvojenih razmacima: minute, sat, dan u mjesecu, mjesec i dan u tjednu. Ova sintaksa rođena je s demonom cron Briana Kernighana 1970-ih, zatim generaliziran od strane Vixie cron (1987) podržavaju sve moderne Linux i macOS distribucije. Danas je ista sintaksa nalazi se u većini planera u oblaku (AWS EventBridge, GCP Cloud Scheduler, Azure Logic Aplikacije) i CI/CD (GitHub Actions, GitLab CI, Jenkins).

┌──── minuta (0-59)
│ ┌── sat (0-23)
│ │ ┌── dan u mjesecu (1-31)
│ │ │ ┌── mjeseci (1-12 ili JAN-PROC)
│ │ │ │ ┌── dan u tjednu (0-7 ili NED-SUB, 0 i 7 = nedjelja)
│ │ │ │ │
* * * * *

Dobro oblikovan cron izraz stoga definira precizan cron raspored: svako polje može biti fiksna vrijednost, raspon, popis, korak ili zvjezdica koja odgovara svemu. Kompaktnost crontab izraza je njegova snaga, ali i ono što ga čini cron dekoder neophodan za vizualnu potvrdu namjere. To je cijela poanta ovog cron pretvarača: stvorite čitljivo cron objašnjenje, plus popis sljedeća pogubljenja.

Anatomija cron izraza

Pet polja dijeli zajedničku gramatiku. Ovdje su ograničenja koja prihvaća svaki stupac a Standardni crontab izraz:

  • Minute: 0-59.
  • Vrijeme: 0-23, 24-satni format.
  • Dan u mjesecu: 1-31.
  • Mjesec: 1-12 ili tekstualne kratice JAN, VELJAČA, MAR, TRAVANJ, SVIBANJ, LIPANJ, SRP, KOLOVOZ, RUJ, LISOP, NOV, DEC.
  • Dan u tjednu: 0-7 gdje su 0 i 7 oba predstavljaju nedjelju ili kratice NED, PON, UTO, SR, ČET, PET, SUB.

Posebni znakovi koje dijeli pet polja:

  • *: bilo koja vrijednost, odgovara svim dopuštenim vrijednostima u polju.
  • ,: diskretni popis, na primjer 1,15,30 u polju minuta.
  • -: uključujući raspon, na primjer 9-17 za radno vrijeme.
  • /: korak, na primjer */15 = svakih 15 jedinica, ili 0-30/5 = svakih 5 minuta između 0 i 30.

Quartz proširenja (Java, AWS EventBridge, Spring): gramatika se povećava na 6 ili 7 polja sa stupcem sekunde na početku (0-59), a ponekad i stupcem Zadnja godina (1970-2099). Quartz također predstavlja ? (bez posebnog vrijednost, za razdvajanje dana u mjesecu i dana u tjednu), L (zadnji: posljednji dan u mjesecu, ili prošli petak s 5L), W (najbliži radni dan) i # (N-ti dan u tjednu u mjesecu, na primjer 2#3 za 3. ponedjeljak). izraz Quartz općenito nije kompatibilan s UNIX crontabom, i obrnuto: ovo je glavni izvor pogreške prilikom kopiranja cron izraza s jedne platforme na drugu.

# UNIX / Vixie cron (5 polja)
0 9 * * 1-5

# Kvarc (6 polja sa sekundama)
0 0 9 ? * PON-PET

# Kvarc (7 polja s godinom)
0 0 9 ? * PON-PET 2026

Zašto dekodirati cron izraz?

Čitanje 0 0 * * * je brzo. Čitanje */7 2-5 1.15 * 1-5 puno je manje. kada izraz je izvan trivijalnog, povećava se rizik od pogreške u tumačenju i cron dekodira postaje faza pregleda sama po sebi.

  • Proizvodnja otklanjanja pogrešaka: shvatite zašto je zadatak pokrenut u 03:17, a ne u 03:00, ili identificirati preklapanje između dva posla.
  • Pregled koda: potvrdite da planer gurnut kao zahtjev za povlačenjem radi ono što radi tvrdi autor, a da pritom ne mora zapamtiti semantiku svakog simbola.
  • Revizija planera: Pregledajte Linux cron poslove u /etc/crontab i /etc/cron.d/, Jenkinsovi okidači, spec.schedule Kubernetes CronJob, pravila Poslovi AWS EventBridge i GCP Cloud Scheduler.
  • Naslijeđena migracija: nastavite s povijesnim /etc/crontab bez dokumentaciju i ponovno izgraditi mapu zadataka prije promjene infrastrukture.
  • Uključivanje: dopustite novom programeru da ponovno pročita crontab bez potrebe za učenjem svih posebnih znakova preko noći.

Kako koristiti cron dekoder

Postupak koji treba slijediti za dekodiranje crontab izraza s alatom:

  1. Zalijepite svoj cron izraz u polje za unos (5 polja odvojenih s razmaci).
  2. Navedite broj sljedećih izvršenja za izračunavanje.
  3. Kliknite na pretvori za pokretanje cron dekodiranja: alat vraća ljudska rečenica koja objašnjava okidanje, plus datumski popis sljedećih pogubljenja.
  4. Vizualno provjerite odgovaraju li datumi vašoj namjeri (vrijeme, dan, učestalost).
  5. Kopirajte izlaz pomoću gumba za kopiranje da biste ga zalijepili u kartu, PR ili dokumentaciju tehničke.

Alat ne pruža samo sintaktičko raščlanjivanje: pruža objašnjenje cronu prirodnom jeziku, što ga čini i cron dekoderom i a validator rasporeda.

Klasični primjeri cron izraza

Uzorci ispod pokrivaju većinu cron rasporeda koji se susreću u proizvodnji. oni svi su važeći za Linux crontab, Kubernetes CronJob, GitHub Actions i većinu planeri aplikacija.

Izraz Ljudsko čitanje
* * * * * Svake minute
0 * * * * Točno svakog sata
0 0 * * * Svaki dan u ponoć
0 0 * * 0 Svake nedjelje u ponoć
*/15 * * * * Svakih 15 minuta
0 9 * * 1-5 9:00 ujutro od ponedjeljka do petka
0 0 1 * * Prvog u mjesecu u ponoć
0 0,12 * * * Svaki dan u ponoć i podne
*/5 9-17 * * 1-5 Svakih 5 minuta tijekom radnog vremena
30 2 1,15 * * 1. i 15. u mjesecu u 2:30 ujutro

Za izvršavanje cron zadatka na Linux poslužitelju, uredite korisnički crontab iz školjke:

# uredi crontab trenutnog korisnika
$ crontab -e

# popis postojećih zadataka
$ crontab -l

# primjer dodane linije: dnevna sigurnosna kopija u 3 ujutro
0 3 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1

Primjer izlaza cron konvertora za */5 * * * *:

2026-05-05 00:00:00
2026-05-05 00:05:00
2026-05-05 00:10:00
2026-05-05 00:15:00
2026-05-05 00:20:00
...

Često postavljana pitanja o cron dekoderu

Koja je razlika između UNIX cron-a i Quartza?

UNIX/Vixie cron koristi 5 polja (od minute do dana u tjednu), bez preciznosti do sekunde, i nema domaći pojam “zadnjeg dana u mjesecu”. Quartz (Java, Spring, AWS EventBridge) dodaje stupac sekunde na vrhu, ponekad stupac godine na dnu i nekoliko simbola (?, L, W, #) nedostaje u Linux crontabu. A cron express 6-field Quartz stoga nije izravno prenosiv na /etc/crontab, i obrnuto. Naš cron dekoder cilja na format 5 polja, što pokriva većinu planera.

Kako pokrenuti cron posao svakih 5 minuta?

Korakom / u polju minuta:

*/5 * * * * /usr/local/bin/check-health.sh

Ovaj crontab izraz pokreće skriptu u minutama 0, 5, 10, 15... svake sat, svaki dan. Da biste ograničili radno vrijeme od ponedjeljka do petka, dodajte ograničenja u poljima za vrijeme i dan u tjednu: */5 9-17 * * 1-5.

Što znači zvjezdica (*) u cron izrazu?

Zvjezdica znači bilo koju vrijednost: odgovara svim ovlaštenim vrijednostima polja. u 0 0 * * *, tri zvjezdice znače "bilo koji dan u mjesecu, bilo koji mjeseca, bilo koji dan u tjednu. U kombinaciji s prva dva polja postavljena na 0, mi dobiva “svaki dan u ponoć”. Zvjezdica se također može kombinirati sa stepenicom: */15 in minuta = svakih 15 minuta.

Ima li Crontab vremensku zonu?

Zadana je vremenska zona poslužitelja. Na Linux crontabu, to je sustav TZ (često UTC na VPS i kontejneri). GitHub Actions forsira UTC. Kubernetes CronJob koristi vremensku zonu kontrolera, konfigurirati putem spec.timeZone od 1.27. AWS EventBridge procjenjuje izraze prema UTC. Planeri aplikacija (Symfony Scheduler, Quartz, Airflow) često vam omogućuju postavljanje a vremenska zona posvećena svakom zadatku. Ako ste u nedoumici, provjerite datum na ciljnom poslužitelju i usporedite s izlazom cron konvertora.

Cron posao u odnosu na naredbu at: koju izabrati?

cron se koristi za izvršavanje ponavljajućeg zadatka prema rasporedu. Koristi se at izvršiti naredbu samo jednom u određeno vrijeme. Za dnevno sigurnosno kopiranje, rotacija dnevnika ili uobičajeni API poziv, koristite cron. Za odgodu jedne operacije ("ponovo pokreni ovu implementaciju večeras u 22 sata"), koristi se na:

$ echo "/usr/local/bin/deploy.sh" | u 22:00
Kako testirati cron izraz bez njegovog pokretanja?

Upravo je to uloga ovog cron pretvarača: on izračunava sljedeći N izvršenja iz trenutnog vremena, bez pokretanja bilo kakvog posla. Odmah vidite je li vaš crontab izraz pokreće se u 03:00 prema očekivanju ili u 03:17 slučajno. Ići dalje daleko prije instaliranja zadatka, također možete testirati samu skriptu (bash -x script.sh) i provjerite sintaksu crontab datoteke s crontab -T datoteka na distribucijama koji to podržavaju.

Što se događa ako su postavljeni i dan u mjesecu i dan u tjednu?

Na Vixie cron (Linux), pravilo je logično ILI: posao se pokreće ako jedan ili drugood dva polja odgovara. Ovo je kontraintuitivno i izvor je grešaka. Kvarc koristi a AND, otuda uvođenje simbola ? za izričito označavanje "ne ograničenje”. Kao opće pravilo, popravite samo jedno od dva polja.

Primjer zahtjeva

curl -X POST https://cdrn.fr/api/v1/tools/cron-converter/execute \
  -H "Content-Type: application/json" \
  -d '{"cron":"...","number_next_date":1}'

Ulazna shema

Polje Tip Obavezno Zadano
cron string
number_next_date integer

Krajnje točke

  • GET https://cdrn.fr/api/v1/tools - ispisuje sve dostupne alate
  • GET https://cdrn.fr/api/v1/tools/cron-converter - dohvaća shemu ovog alata
  • POST https://cdrn.fr/api/v1/tools/cron-converter/execute - izvršava ovaj alat s JSON payloadom