Ugrás a tartalomhoz

Cron kifejezés szintaxisa

Egy cron kifejezés öt mező, amely leírja, hogy valami mikor fusson. Minden mező mondja, hogy az egysége mely értékei elfogadhatók, és a munka minden olyan percben fut, amikor mind az öt egyetért. Ez az egész modell: nincs időtartam, nincs „minden 90 perc”, és sehol nincs következő futás állapota.

A mezőket balról jobbra olvasva percként, óraként, hónap napjaként, hónapként, hét napjaként olvasva. Az alábbi példák azok, amelyekhez az emberek valóban nyúlnak, és mindegyiket a webhely saját cron elemzője parszolja az oldal felépítése előtt.

Az utolsó szakasz olyan szintaxist sorol fel, amely cronnak tűnik, de itt nem fogadunk el: Quartz és Jenkins kiterjesztések, valamint a hat mezős forma másodpercekkel. Érdemes felismerniük, mert egy másolat kifejezés, amely egyik sem használja, egyszerűen meghiúsul.

Az öt mező

7

Egy cron sor öt szóközzel elválasztott mező, majd a parancs. Minden mezőnek jelen kell lennie; nincs módja az egyiket kihagyni.

KifejezésTartományJelentés
* * * * *min hod dom mes dowAz öt mező sorrendben: perc, óra, hónap napja, hónap, hét napjaÖt csillag jelenti minden perc minden napját — a legbővebb kifejezés.
minute0-59Első mező
hour0-23Második mező, 24 órás formátumban
day of month1-31Harmadik mezőEgy adott hónapban nem létező nap egyszerűen kihagyódik — a 31-es év hetente fut, nem tizenkétszer.
month1-12Negyedik mező
day of week0-7Ötödik mező, vasárnap elölVasárnap a 0 és a 7, amely az 1–7 tartomány használatát csinálja helyett a 0–6-tal.
0 5 13 * 5Ha mindkét nap mező korlátozva van, a cron egyik futása — nem mindkettőEz a 13. és minden pénteken fut, így nem „péntek 13-ik”. Ez az egyetlen cron szabály, amely mindenkit meglepet.

Operátorok

10

Ugyanaz a négy operátor minden mezőben működik; csak az általa elfogadott számok tartománya változik.

KifejezésTartományJelentés
*A mező összes értéke
1,15,30Egyes értékek listája
9-17Befogadó tartomány
*/15Minden n-edik érték a teljes mezőn keresztülA perc mezőben a */15 :00, :15, :30 és :45 — a tartomány aljáról számít, nem mostantól.
9-17/2Minden n-edik érték egy tartományon belül
5/10Minden n-edik érték egy kezdőponttól a mező végéig
0,30 9-17 * * 1-5Az operátorok szabadon kombinálhatók bármely mezőbenMinden fél és teljes óra, kilenc és öt között, hétfőtől péntekig.
JAN-DEC1-12Hónapnevek, három betű, nem érzékeny a kis- és nagybetűkre
SUN-SAT0-6Napnevek, három betű, nem érzékeny a kis- és nagybetűkre
70Vasárnap, a másik módon írva

Parancsikó makrók

7

Hét név, amely egy egész kifejezéshez tartozik. A crontab fájl formátumának kényelme, nem a mező nyelvtana — egy olyan ütemezőt, amely cron karakterláncokat olvas, nem feltétlenül szükséges fogadni.

KifejezésTartományJelentés
@hourly0 * * * *Az óra minden tetején
@daily0 0 * * *Naponta egyszer éjfélkor
@midnight0 0 * * *Ugyanaz, mint @daily
@weekly0 0 * * 0Hetente egyszer vasárnap éjfélkor
@monthly0 0 1 * *A hónap első napja éjfélkor
@yearly0 0 1 1 *Január 1-én éjfélkor
@annually0 0 1 1 *Ugyanaz, mint @yearly

Munkaidő-példák

14

Ha a kifejezés megsemmisíteni kezd, olvassa jobbról balra: a leggrossz mező jobbra van, és azt dönti el, mely napok még értékelik a finomabbakat.

KifejezésTartományJelentés
* * * * *Minden perc
*/5 * * * *Minden öt perc
0 * * * *Minden óra, az óra tetején
0,30 * * * *Minden fél óra
0 3 * * *Minden nap 03:00-kor
0 9,17 * * *Naponta kétszer, 09:00-kor és 17:00-kor
*/15 9-17 * * 1-5Minden negyed óra munka közben munkanapokon
0 8 * * 1-5Munkanapokon 08:00-kor
0 10 * * 6,0Szombat és vasárnap 10:00-kor
30 7 * * MONHétfő 07:30-kor
0 0 1 * *Éjfél minden hónap első napján
0 0 28-31 * *Minden nap a hónap utolsó szakaszábanA szokásos cron nem ismeri a „hónap utolsó napját”. Ez helyette akár négyszer is futhat; a szokásos megoldás egy olyan parancsfájl, amely ellenőrzi a dátumot és korán kilép.
0 0 1 1,4,7,10 *Éjfél az egyes negyedévek első napján
0 0 1 1 *Évente egyszer, január 1-jének kezdete

Olyan kiterjesztések, amelyeket ez az oldal nem fogad el

6

Quartz, Jenkins és néhány felhő ütemezőt adnak hozzá. Felsorolva vannak, hogy felismerd mások crontabjában — az oldal elemzője mindegyiket elutasítja, csakúgy mint a Linuxszal szállított cron.

KifejezésTartományJelentés
?„Nincs meghatározott érték” a nap mezőben, amely a másodikat már korlátozza
LA hónap utolsó napja vagy az utolsó adott hétköznap
15WA 15-hez legközelebb eső hétköznap
FRI#3A hónap harmadik pénteke
*/30 * * * * *Hatodik mező másodpercekhez, elölHat mező, nem öt. Quartz és több szintű könyvtár ezt a formát használja; a crontab fájl nem.
@rebootEgyszer futtatni a gép indításakorValódi crontabban, de nem ütemezés — nincs következő futás kiszámítva, amely az oka annak, hogy az oldal elemzője elutasítja.

Gyakori kérdések

Miért futott a „péntek 13-ik” munkám minden pénteken?
Mert amikor a nap-hónap és a nap-hét mezők korlátozottak, a cron ezeket vagy/vagy helyett kezeli, nem és/és. A 0 5 13 * 5 a 13-ikon és minden pénteken fut. Az igazi péntek 13-at közvetlenül a parancsfájlban történő dátum-ellenőrzés szükséges.
A */5 azt jelenti, hogy „öt perc múlva”?
Nem. A lépések a mező tartományának aljáról számítódnak, nem az telepítés pillanatából, így a perc mezőben a */5 :00, :05, :10 és így tovább azt jelenti — függetlenül attól, hogy mikor írták.
Milyen időzónát használ a cron?
A rendszert, hacsak a crontab felül nem állítja a CRON_TZ vagy TZ értékeket. Ezt az év kétszer vonatkoztatja: egy olyan munka ütemezve, amely egy nyári időszámítási ugrásban történt, nem fut, és egy, amely egy ismétlődő órában történt, kétszer futhat.
A 0 és a 7 azonos a nap-hét mezőben?
Igen, mindkettő vasárnap. A duplikátum azért létezik, hogy az 1–7 tartomány hétfőtől vasárnapig természetesen írható legyen, amelyet a 0–6 mező egy tartományban nem tud kifejezni.
Hol tesztelhetem a kifejezéseket?
A webhely cron elemzője elfogad egy kifejezést, és a következő futásokat egyszerű szöveggel mutatja, helyileg a böngészőben. Az mellette lévő generátor az ellenkező irányba megy: válasszon ütemezést, és az kifejezést ír.