A cron olyan, a háttérben futó feladatkezelő, mely bizonyos időközönként, időpontokban meghatározott programokat futtat. A legtöbb Unix-szerű operációs rendszer alapvető része. Automatizálja a rendszer a karbantartási, adminisztrációs, egyéb folyamatait. Így például az internetre való csatlakozást vagy az e-mailek automatikus letöltését.
A crontab olyan szöveges fájl, mely tartalmazza azokat az információkat, adatokat, melyek a cront irányítják. Azt azonban, hogy kik azok a felhasználók, akik futtathatják a cront, illetve létrehozhatnak saját feladatlistát, crontabot a /etc/cron.allow és a /etc/cron.deny fájlok határozzák meg. Azok a felhasználók, akiknek a neve szerepel a cron.allow fájlban és/vagy nem szerepel a cron.deny-ben (az itt szereplők számára ugyanis tiltott), szerkeszthetik a feladatlistát.
Az időzítés általános kinézete a következő:
* * * * * felhasználó / program
A csillagok határozzák meg az egyes időegységeket, időintervallumokat:
- csillag a perc: 0-59 közötti értéket vehet fel
- csillag az óra: 0-23 közötti értékkel
- csillag a hónap napjai: 1-31 közötti értékkel
- csillag a hónap: 1-12 közötti értékkel
- csillag a hét napjai: 0-6 közötti értékkel, ahol 0 a vasárnapot jelöli
Ezután már csak azt kell megadnunk, hogy milyen műveletet szeretnénk beütemezni.
Példák az ütemezésre
Tegyük fel, hogy a „minta” nevű programunk futtatását szeretnénk időzíteni. Ez a különböző időpontok esetén a következőképp fog alakulni.
- Óránként egyszer futtassa: 0 * * * *
- Futtatás naponta egyszer éjfélkor: 0 0 * * *
- Futtatás hetente egyszer vasárnap éjfélkor: 0 0 * * 0
- Futtatás havonta egyszer a hónap első napján éjfélkor: 0 0 1 * *
- Futtatás évente egyszer január 1-én éjfélkor: 0 0 1 1 *
A teljes példát nézve: 9 18 * * 5 /usr/local/bin/minta vagyis minden hónapban a hét 5. napján, azaz pénteken 18 óra 9 perckor futtassa le a minta programunkat.
Amennyiben több időpontot is szeretnénk megadni, azt vesszővel, szóköz nélkül tudjuk hozzáadni. Az előző példánál maradva: 9 18 * * 2,5 /usr/local/bin/minta . Ez azt jelenti, hogy szeretnénk, ha minden hónapban a hét második és ötödik napján, kedden és pénteken 18 óra 9 perckor futna a programunk.
Egyéb gyakori ütemezési lehetőségek:
- */5 : az összes 5-tel osztható alkalmat jelenti, például minden ötödik percben, órában stb.
- 1-5 : nagyobb intervallumok kifejezésére, hogy ne kelljen végigírni vesszővel elválasztva. Például a napoknál az 1-5 a hétköznapokat jelöli.
A cronban használható speciális karakterek jelentései:
- Csillag (*) jelentése: az összes érték az adott tartományban, például minden perc az órában.
- Perjel (/) jelentése: az adott tartományon belül meghatározott értékhez rendelt gyakoriság, például ha a perceket nézzük 5/15 jelentése, minden 5. perctől 15 percenként.
- Százalékjel (%) jelentése: gyakorlatilag fordítottja a perjelnek.
- Vessző (,) jelentése: több érték megadása az adott tartományon belül, például napoknál 2,3,4 mutatja a kedd, szerda, csütörtök napokat.
- Kötőjel (-) jelentése: amennyiben több értéket kívánunk felsorolni, de túl hosszú lenne kiírni őket, összevontan is megadhatjuk. Az előző példánál maradva: 2,3,4 helyett írhatjuk 2-4 módszerrel is.
- Kettőskereszt (#) jelentése: csak a hét napjainál használható,
- „L” jelentése: az utolsó érték. Napoknál használva 4L jelenti a hónap utolsó csütörtökjét. Értelemszerűen csak a hét és hónap napjainál használható.