Preskoči na sadržaj

Sintaksa Cron izraza

Cron izraz je pet polja koja opisuju kada bi se nešto trebalo pokrenuti. Svako polje kaže koje vrijednosti svoje jedinice su dozvoljene, a zadatak se pokreće u svakoj minuti gdje su sva pet se slaže. To je cijeli model: nema pojma trajanja, nema „svakih 90 minuta” i nema stanja sljedećeg pokretanja negdje pohranjeno.

Polja se čitaju slijeva nadesno kao minuta, sat, dan mjeseca, mjesec, dan tjedna. Primjeri na dnu su oni koje se stvarno koriste, i svaki od njih je provjeren s vlastitim cron parserom ove stranice prije nego što je stranica izgrađena.

Zadnja sekcija popis sintakse koja izgleda kao cron ali se ne prihvaća ovdje: Quartz i Jenkins proširenja, i šestopolje oblik sa sekundama. Vrijedno je znati ih jer kopiran izraz koji koristi jedan od njih jednostavno neće raditi.

Pet polja

7

Cron redak je pet polja odvojena razmakom, zatim naredba. Svako polje mora biti prisutno; nema mogućnosti da se neće.

IzrazRasponZnačenje
* * * * *min hod dom mes dowPet polja redom: minuta, sat, dan mjeseca, mjesec, dan tjednaPet zvijezdica znači svaku minutu svakog dana — najslabije moguće izraz.
minute0-59Prvo polje
hour0-23Drugo polje, na 24-satnoj skali
day of month1-31Treće poljeDan koji ne postoji u danom mjesecu se jednostavno preskoči — 31 se pokreće sedam puta godišnje, ne dvanaest.
month1-12Četvrto polje
day of week0-7Peto polje, nedjelja prvaNedjelju znači 0 i 7 — zato raspon završava sa sedam umjesto šest.
0 5 13 * 5Kada su oba polja dana ograničena, cron se pokreće na bilo kojem — ne na oba odjednomOvo se pokreće na 13. i na svakom petku, tako da nije "Petak 13.". To je jedno pravilo crona koji iznenađuje sve.

Operatori

10

Ista četiri operatora rade u svakom polju; samo brojevi koje primaju se mijenjaju.

IzrazRasponZnačenje
*Svaka vrijednost koju polje dopušta
1,15,30Popis pojedinačnih vrijednosti
9-17Raspon uključujući oba kraja
*/15Svaka n-ta vrijednost u cijelom polju*/15 u polju minuta znači :00, :15, :30 i :45 — broji se od dna raspona, ne od sada.
9-17/2Svaka n-ta vrijednost unutar raspona
5/10Svaka n-ta vrijednost od početne točke do kraja polja
0,30 9-17 * * 1-5Operatori se mogu slobodno miješati u bilo kojem poljuNa pola sata, između 9 i 17, od ponedjeljka do petka.
JAN-DEC1-12Nazivi mjeseci, tri slova, ne ovisno o slučaju
SUN-SAT0-6Nazivi dana, tri slova, ne ovisno o slučaju
70Nedjelja, napisana na drugi način

Skraćene makroe

7

Sedam naziva koji stoje za čitav izraz. Oni su pogodnost formata crontab, ne gramatika polja — planer koji čita cron stringove ih ne mora prihvatiti.

IzrazRasponZnačenje
@hourly0 * * * *Na vrhu svakog sata
@daily0 0 * * *Jednom dnevno u ponoć
@midnight0 0 * * *Isto kao @daily
@weekly0 0 * * 0Jednom tjedno, nedjelja u ponoć
@monthly0 0 1 * *Prvoga mjeseca u ponoć
@yearly0 0 1 1 *Prvoga siječnja u ponoć
@annually0 0 1 1 *Isto kao @yearly

Primjeri

14

Čitaj jedno sdesna na lijevo kada prestane biti razumno: najgrublje polje je na desnoj i odlučuje koje dane fina polja čak i dobivaju provjeren.

IzrazRasponZnačenje
* * * * *Svaku minutu
*/5 * * * *Svakih pet minuta
0 * * * *Svaki sat, uvijek na vrhu
0,30 * * * *Svakih pola sata
0 3 * * *Svaki dan u 03:00
0 9,17 * * *Dva puta dnevno, u 09:00 i 17:00
*/15 9-17 * * 1-5Svakih petnaest minuta tijekom radnih sati u radne dane
0 8 * * 1-5Radni dani u 08:00
0 10 * * 6,0Subotel i nedjelja u 10:00
30 7 * * MONPonedjeljak u 07:30
0 0 1 * *Ponoć prvog dana svakog mjeseca
0 0 28-31 * *Svaki dan u zadnjem dijelu mjesecaStandardni cron nema "zadnjeg dana mjeseca". Ovo se pokreće do četiri puta; uobičajeno rješenje je skripta koji provjeri datum i izlazi rano.
0 0 1 1,4,7,10 *Ponoć prvog dana svakog četvrtina
0 0 1 1 *Jednom godišnje, na početku 1. siječnja

Proširenja koja ova stranica ne prihvaća

6

Quartz, Jenkins i neki cloud poredbeni dodaju ih. Navedeni su tako da ih prepoznate u nečijoj crontabi — parser na ovoj stranici odbija svaki, kao što čini i cron isporuka sa Linux-om.

IzrazRasponZnačenje
?"Nema specifične vrijednosti" u polju dana koja već ograničava drugi
LZadnji dan mjeseca ili zadnji dati dan tjedna
15WRadni dan najbliži 15.
FRI#3Treći petak u mjesecu
*/30 * * * * *Šesto polje za sekunde, sprijedaŠest polja, ne pet. Quartz i nekoliko knjižnica koriste ovaj oblik; datoteka crontab ne.
@rebootPokreni jednom kada se stroj restartiraPravi u crontab, ali nije raspored — nema sljedećeg pokretanja za izračun, zato parser ovdje to odbija.

FAQ

Zašto se moj zadatak "Petak 13." pokrenuo svaki petak?
Jer kada su oba polja dan-mjeseca i dan-tjedna ograničena, cron ih tretira kao ili/ili umjesto i. 0 5 13 * 5 se pokreće 13. i na svakom petku. Pravi Petak 13. trebao би biti datum provjere unutar samog skripte.
Znači li */5 "pet minuta od sada"?
Ne. Koraci se broje od dna raspona polja, ne od trenutka kada instalirate zadatak, tako da */5 u polju minuta znači :00, :05, :10 i tako dalje — bez obzira kad je napisan.
Koju vremensku zonu koristi cron?
Sustava, osim ako crontab ne postavi CRON_TZ ili TZ na vrhu. To je važno dva puta godišnje: zadatak zaplaniran u satu koji se promjena ljetnog vremena preskače se ne pokreće, a zadatak u satu koji se ponavlja može se pokrenuti dva puta.
Je li 0 isto kao 7 u polju dana u tjednu?
Da, oboje su nedjelja. Duplikat postoji da raspon 1-7 koji pokriva ponedjeljak kroz nedjelju može biti napisan prirodno, što polje 0-6 ne može izraziti u jednom rasponu.
Gdje mogu testirati izraz?
Cron parser na ovoj stranici prima izraz i prikazuje sljedeće pokretanja na običnom jeziku, lokalno u vašoj pregledniku. Alat pored njega ide drugi put: odaberite raspored i on piše izraz.