A rendszerkarbantartó feladatokat -például biztonsági mentések – ütemezését Linuxban a cron szolgáltatás kezeli, amelyet a hasonló nevű crond démon valósít meg a rendszerben. Az ütemeződémon egy folyamatosan futó szerver, amely szüntelenül figyeli, hogy hogy épp milyen feladatok végrehajtására van szükség. Az ellenőrzött feladatok felsorolását a crontab állomány tartalmazza. A cron szolgáltatás démona folyamatosan figyeli a felhasználók crontab állományát, hogy lássa elérkezett-e az ideje valamelyik feladat elindításának. Saját célra bármelyik felhasználó készíthet magának ilyen crontab állományt. A rendszergazda a crontab fájlban rendszeradminisztrációs feladatok ütemezését írhatja elő, így például jó előre megmondhatja, hogy a hét vagy a hónap mely napján – és azon belül is hány órakor – kell az állományok biztonsági mentését elvégezni.
A cron szolgáltatás démona: crond
Rendes körülmények között rendszerindításkor a crond démon elindul, ha ez valamiért nem történik meg az alábbi paranccsal tudjuk engedélyezni:
systemctl enable crond
A cron szolgáltatást kézi úton is elindíthatjuk illetve leállíthatjuk, az elindításhoz a start, a leállításhoz a stop paraméterrel adjuk ki a systemctl parancsot:
systemctl start|stop|restart crond
A crontab bejegyzések
Egy crontab bejegyzés hat mezőből áll: az első öt a művelet végrehajtásának a dátumát és pontos idejét, az utolső mező pedig magát a műveletet határozza meg. Az első mező a percet (0-59), a második mező az órát (0-23), a harmadik mező a naptári napot (1-31), a negyedik mező a hónapot (1-12), az ötödik mező a hét bizonyos napjait (0-6, vasárnap jelöli a nullát!) Az időt specifikáló mezőkben egy-egy tartományt, illetve értéklistát is elhelyezhetünk, a csillagkarakterrel (*) pedig az összes lehetséges értékre hivatkozhatunk.
Egy crontab bejegyzés felépítése tehát az alábbi formátumot tükrözi:
perc óra naptári_nap hónap hét_napja feladat
Nézzünk pár példát így könnyebben megérthető:
A felhasználó könyvtárában lévő fontos/adatok mappában lévő összes állomány tömörítése minden hétköznap 2 órakor:
0 2 * * 1-5 tar czf ~/fontos/adatok/*
Ha nem minden nap csak kedden és pénteken akarjuk elmenteni, akkor elég ezt a két napot megadni:
0 2 * * 2,5 tar czf ~/fontos/adatok/*
A cron szerencsére a megjegyzések használatát is támogatja. A crontab állományban szereplő megjegyzések sora a már megszokott kettőskereszt (#) jellel kezdődik.
#fontos adataim napi mentése
0 2 * * 1-5 tar czf ~/fontos/adatok/*
A crontab parancs
A crontab parancsot az összeállított bejegyzések crontab állományba történő telepítésre használjuk. Ehhez először is egy crontab bejegyzéseket tartalmazó szövegfájl kell készítenünk. Ezt a fájl bármilyen néven elmenthetjük, így például azencronfajlom néven is. A szövegfájl bejegyzéseinek telepítéséhez futtassuk a crontab utasítást és a szövegfájl nevét. A parancs ekkor beolvassa a szövegfájl tartalmát, amelyből egy szabályos crontab fájlt készít a /var/spool/cron könyvtárban a felhasználó nevének felhasználásával. Ha az állományt nem a rendszergazda, hanem a linuxtudor nevű felhasználó készítené el, a /var/spool/cron/linuxtudor nevezetű fájl jönne létre.
A crontab parancs alkalmazását az /etc/cron.allow állománnyal a törzsfelhasználókra korlátozhatjuk, ami azt jelenti, hogy csak azok a felhasználók hozhatnak létre maguknak crontab fájlokat, akik neve ebben az állományba szerepel. Az állomány párja az /etc/cron.deny nevű fájl a cron eszköz használatától eltiltott felhasználókat sorolja fel, így ők nem ütemezhetnek feladatokat a rendszerben. Ha egyik fájl sem található a rendszerben, a hozzáférés mindenki számára egyformán tiltott lesz. Természetesen a hozzáférés akkor sem biztosított, ha a felhasználó neve hiányzik az /etc/cron.allow állományból. Abban az esetben viszont, amikor az /etc/cron.allow állomány nem létezik, az /etc/cron.deny azonban rendelkezésünkre áll, akkor az állomány listájáról kihagyott felhasználók automatikusan elnyerik hozzáférési jogukat.
A crontab kapcsólói
crontab -e – a crontab fájlunk módosítási, betölti szerkesztésre a szövegszerkesztőbe
crontab -l – crontab fájlunk tartalmát megjeleníti a képernyőn
crontab -r – crontab fájl törlése
Ha a crontab utasítást egy másik – szintén crontab bejegyzéseket tartalmazó – szövegfájllal futtatjuk, meglévő crontab állományunk felülírását érjük el, hiszen az új szövegfájl telejes egészében kitörli majd annak eredeti bejegyzését.