Izračunati sljedeća izvršavanja cron izraza
- Nadzorna ploča
- Dokumentacija
- API
Š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-12ili tekstualne kraticeJAN,VELJAČA,MAR,TRAVANJ,SVIBANJ,LIPANJ,SRP,KOLOVOZ,RUJ,LISOP,NOV,DEC. - Dan u tjednu:
0-7gdje su0i7oba predstavljaju nedjelju ili kraticeNED,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 primjer1,15,30u polju minuta.-: uključujući raspon, na primjer9-17za radno vrijeme./: korak, na primjer*/15= svakih 15 jedinica, ili0-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/crontabi/etc/cron.d/, Jenkinsovi okidači,spec.scheduleKubernetes CronJob, pravila Poslovi AWS EventBridge i GCP Cloud Scheduler. - Naslijeđena migracija: nastavite s povijesnim
/etc/crontabbez 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:
- Zalijepite svoj cron izraz u polje za unos (5 polja odvojenih s razmaci).
- Navedite broj sljedećih izvršenja za izračunavanje.
- Kliknite na pretvori za pokretanje cron dekodiranja: alat vraća ljudska rečenica koja objašnjava okidanje, plus datumski popis sljedećih pogubljenja.
- Vizualno provjerite odgovaraju li datumi vašoj namjeri (vrijeme, dan, učestalost).
- 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 alateGET https://cdrn.fr/api/v1/tools/cron-converter- dohvaća shemu ovog alataPOST https://cdrn.fr/api/v1/tools/cron-converter/execute- izvršava ovaj alat s JSON payloadom