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

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

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.