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 fut0 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.
