User Tools

Site Tools


wiki:cron

Cron – Ütemezés

Sok helyen a BroAdminban be lehet állítani, hogy egy feladat (pl. egy Feladat, a Loader, a Syncer vagy bármelyik más automatizált script) mikor és milyen gyakran fusson le magától. Ezt egy cron mintával adjuk meg: egy rövid, tömör szöveggel, amivel pontosan leírható egy ismétlődő időpont vagy időszak, anélkül, hogy egyesével fel kellene sorolni minden egyes alkalmat.

A BroAdmin 6 mezős cron szintaxist használ: <másodperc> <perc> <óra> <nap> <hónap> <hét napja>. (Ez eggyel több mező, mint amit sok más rendszerben — pl. Linuxon — megszoktunk, ott ugyanis nincs másodperc mező.)

A hat mező

# Mező Érték Példa
1 másodperc 0-59 30 = a perc 30. másodpercében
2 perc 0-59 15 = az óra 15. percében
3 óra 0-23 8 = reggel 8 órakor
4 nap 1-31 1 = a hónap első napján
5 hónap 1-12 12 = decemberben
6 hét napja 0-7 (0 és 7 = vasárnap) 1 = hétfőn

Tehát pl. a 0 0 8 * * * minta azt jelenti: “minden nap reggel 8 óra 0 perc 0 másodpercben” — a csillag (“bármi is jó”) kitölti azokat a mezőket, amikre nem akarunk szűkíteni.

A <nap> és a <hét napja> mező együtt furcsán viselkedik: ha mindkettőt megadjuk, a cron vagy az egyikre, vagy a másikra illeszkedve is lefut. Pl.: 0 0 0 1 * 1 → lefut minden hónap 1-jén és lefut minden hétfőn is — nem csak akkor, ha a hónap 1-je épp hétfőre esik.

Szintaxis

  • * - minden lehetséges értékre egyezik (pl.: * * * * * * - minden másodpercben lefut)
  • <szám> - konkrét érték (pl.: 0 0 10 * * * - minden nap 10:00-kor lefut)
  • a,b - több konkrét érték felsorolása (pl.: 0 0 8,20 * * * - minden nap 08:00 és 20:00 órakor)
  • a-b - tartomány, kezdő-vég érték (pl.: 0 0 9-17 * * 1-5 - hétfőtől péntekig 9:00 és 17:00 között minden órában)
  • */n - lépésköz N értékenként (pl.: 0 */10 * * * * - 10 percenként)
  • a-b/n - tartomány lépésközzel (pl.: 0 0 9-17/2 * * * - 9 és 17 óra között 2 óránként)

A másodperc mezőben kerüljük a túl sűrű futást (pl. */5 vagy *) — ez felesleges terhelést okoz a szerveren. A legtöbb feladatnál elég, ha a másodperc mező egy fix érték (általában 0), és a percet/órát állítjuk a kívánt gyakoriságra.

Példák

  • 0 * * * * * - Percenként: minden perc 0. másodpercében lefut (pl. 12:34:00, 12:35:00, …)
  • 0 15 * * * * - Óránként, a 15. percben: minden órában a 15. perc 0. másodpercében fut (pl. 08:15:00, 09:15:00, …)
  • 0 30 */4 * * * - Négyóránként, 30-kor: minden 4. órában a 30. perc 0. másodpercében fut (pl. 00:30:00, 04:30:00, 08:30:00, 12:30:00, 16:30:00, 20:30:00)
  • 0 0 8 * * * - Minden reggel 8-kor: minden nap 08:00:00-kor fut
  • 0 0 6 * * 1 - Minden hétfőn 6-kor: hetente hétfőn 06:00:00-kor fut (a hét napja: 1 = hétfő)
  • 0 * 5-22 * * 1-5 - Minden hétköznap 5 és 22 között: hétfőtől péntekig minden percben fut az 5:00–22:59 időablakban (tehát 22:59:00 még igen, 23:00:00 már nem)
  • 0 * 8-12,16-20 * * 6,0 - Hétvégén délelőtt és délután: szombat és vasárnap minden percben fut 08:00–12:59 és 16:00–20:59 között (0 = vasárnap, 6 = szombat)
  • 0 0 20 * * 1,4 - Hétfőn és csütörtökön este nyolckor: 20:00:00-kor fut (1 = hétfő, 4 = csütörtök)
  • 0 0 4 1 1,4,7,10 * - Negyedévente: a negyedév első hónapjának 1. napján reggel 4:00-kor fut (január, április, július, október)

Nem kell fejben számolni: ha nem vagy biztos a mintában, indulj ki egy hasonló, fenti kész példából, és csak a szükséges mezőt módosítsd — így kisebb az elgépelés esélye.

Nem csak ismétlődő futtatásra való

A cron minta valójában nem mást fejez ki, mint hogy mely pillanatok illeszkednek rá — ezt a legtöbb helyen ismétlődő futtatásra használjuk (“ekkor induljon el a feladat”), de ugyanígy fel lehet vele írni azt is, hogy egy adott dolog mikor számít érvényesnek vagy aktívnak, anélkül, hogy valódi futtatás történne.

Például a Script modul Loader oldalán a cron mintával nem azt adjuk meg, hogy mikor induljon el a betöltés — azt a fájlesemény váltja ki —, hanem azt, hogy a betöltés a nap/hét mely időszakaiban futhat egyáltalán; a rendszer az aktuális pillanatot ehhez a mintához hasonlítja, és csak illeszkedés esetén engedi tovább.

Érvényességi időszaknál mindig tartományt (a-b) érdemes megadni a releváns mezőben, nem csak egy konkrét értéket — pl. 0 0 6-22 * * * azt jelenti, hogy a minta minden nap 06:00:00-tól 22:59:59-ig folyamatosan illeszkedik (tehát ennyi ideig “aktív”), nem csak a 6. órában, egyetlen pillanatra.

wiki/cron.txt · Last modified: (external edit)