11.6. A cron segédprogram beállítása

Írta: Tom Rhodes.

A cron(8) a FreeBSD egyik leghasznosabb segédprogramja. A cron segédprogram a háttérben fut és folyamatosan figyeli az /etc/crontab állományt. Emellett a cron új crontab állományok után kutatva folyamatosan ellenőrzi a /var/cron/tabs könyvtárat. Ezek a crontab állományok olyan feladatokról tárolnak adatokat, amelyeket a cron programnak egy adott pillanatban el kell végeznie.

A cron a konfigurációs állományok két külön fajtáját, a rendszer- és felhasználói crontabokat használja. A két típus között levő egyetlen különbség a hatodik mezőben található. A rendszerszintű crontabok esetében a hatodik mező annak a felhasználónak a nevét tartalmazza, amivel a program fut. Ezzel a rendszer szintjén működő crontaboknak megadatott az a képesség, hogy tetszőleges felhasználó nevében futtassanak programokat. A felhasználók crontabjaiban a hatodik mező a futtatandó parancsot tartalmazza, és ilyenkor az összes parancs a crontabot létrehozó felhasználó nevében hajtódik végre. Ez utóbbi egy fontos biztonsági jellemző.

Megjegyzés: A felhasználói crontabok lehetővé teszik az egyes felhasználók számára, hogy a root felhasználó jogosultságai nélkül képesek legyenek feladatokat ütemezni, ugyanis a felhasználóhoz tartozó crontabban szereplő parancsok mindegyike a tulajdonosának engedélyeivel fut.

Az átlagos felhasználókhoz hasonlóan a root felhasználónak is lehet crontabja, ami nem ugyanaz, mint az /etc/crontab (a rendszer saját crontab állománya). De mivel a rendszernek külön crontabja van, ezért a root felhasználónak nem kell külön crontabot létrehozni.

Vessünk egy pillanatást az /etc/crontab (a rendszer crontabjának) tartalmára:

# /etc/crontab - a root crontabja FreeBSD alatt
#
# $FreeBSD: src/etc/crontab,v 1.32 2002/11/22 16:13:39 tom Exp $
# (1)
#
SHELL=/bin/sh
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin (2)
HOME=/var/log
#
#
#minute	hour	day	month	wday	who	command (3)
#
#
*/5	*	*	*	*	root	/usr/libexec/atrun (4)
(1)
A FreeBSD legtöbb konfigurációs állományához hasonlóan itt is a # jelöli a megjegyzéseket. Az ilyen megjegyzések remekül használhatóak annak feljegyzésére, hogy mit és miért akarunk futtatni. A megjegyzések azonban nem szerepelhetnek a paranccsal egy sorban, mivel máskülönben a parancs részeként kerülnek értelmezésre. Tehát mindig új sorba kell raknunk ezeket. Az üres sorokat a program nem veszi figyelembe.
(2)
Először is meg kell adnunk egy környezetet. Az egyenlőség (=) karakter használatos a környezeti beállítások meghatározására, ahogy mindezt az itteni példában is tapasztalhatjuk a SHELL, PATH és HOME értékek esetében. Ha nem adunk meg mást, akkor a cron az alapértelmezés szerinti sh parancsértelmezőt használja. Ha nem adjuk meg a PATH változó értékét, akkor minden állományra abszolút elérési úttal kell hivatkoznunk, mivel ennek nincs alapértelmezett értéke. Ha nem definiáljuk a HOME változó értékét, akkor a cron a parancshoz tartozó felhasználó könyvtárából fog dolgozni.
(3)
Ez a sor írja le a megadható hét mezőt. Az itt szereplő értékek a minute (perc), hour (óra), mday (a hónap napja), month (hónap), wday (a hét napja), who (ki) és command (mit). A mezők szinte maguktól értetődnek. A minute egy órán belül adja meg azokat a perceket, amikor az adott parancsot le kell futtatni. A hour hasonló a minute beállításhoz, csak az itt szereplő értékét órákban kell értelmezni. Az mday a hónap napjaiban számol. A month hasonló a minute és hour opciókhoz, de ez hónapot jelöl. A wday a hét egy napját jelzi. Ezeknek a mezőknek numerikus, valamint a huszonnégy órás időformátumnak megfelelő értékeket kell tartalmazniuk. A who mező, a többiektől eltérő módon, csak az /etc/crontab állományban jelenik meg. Ez a mező adja meg, hogy a parancsot milyen felhasználóval kell futtatni. Ez az opció nem jelenik meg a felhasználók saját crontab állományainak telepítésekor. A sor végén láthatjuk még a command oszlopot is. Ez az utolsó mező, és ide kerül a végrehajtandó parancs.
(4)
Ez az utolsó sor a fentebb tárgyalt értékeket határozza meg. Észrevehetjük, hogy a sor egy */5 alakú felírással kezdődik, amelyet további * karakterek követnek. A * karakterek jelentése “első-utolsó”, ami arra utal, hogy mindig. Ennek megfelelően úgy értelmezhetjük ezt a sort, hogy a root felhasználóval le kell futtatni az atrun parancsot minden ötödik percben, függetlenül attól, hogy milyen nap vagy hónap van. Az atrun parancsról részletesebban az atrun(8) man oldalán kapunk felvilágosítást.

Az itt szereplő parancsoknak tetszőleges mennyiségű paraméter adható át, azonban a több soron keresztül átívelő parancsok tördelését a sor végén a “\” karakterrel kell jelezni.

Ez mindegyik crontab állomány alapbeállítása, habár ettől általában egy dologban eltérnek. A hatodik mező, ahol a felhasználót adtuk meg, csak a rendszer /etc/crontab állományában jelenik meg. Ez a mező a felhasználók crontab állományaiból kimarad.

11.6.1. Egy crontab telepítése

Fontos: Nem kötelező az itt ismertetésre kerülő módon szerkeszteni vagy telepíteni a rendszer crontabját. Egyszerűen nyissuk meg a kedvenc szövegszerkesztőnkkel, és a cron segédprogram majd észreveszi, hogy az állomány megváltozott, majd ennek megfelelően neki is lát a módosított változat használatának. Erről a GYIK-ban (angolul) többet is megtudhatunk.

Egy frissen készített felhasználói crontab telepítéséhez először a kedvenc szövegszerkesztőnk segítségével létre kell hoznunk a megfelelő formátumú állományt, majd használnunk a crontab segédprogramot. Ennek általános alakja:

% crontab crontab_állomány

Ebben a példában a crontab_állomány a korábban létrehozott crontab neve lesz.

Lehetőségünk van lekérdezni a telepített crontab állományokat: egyszerűen adjuk át a -l kapcsolót a crontab parancsnak, és nézzük meg, mit ad vissza.

A crontab -e használata olyan felhasználók számára ajánlott, akik sablon alkalmazása nélkül szeretnének teljesen maguktól megírni egy crontab állományt. Ennek hatására a kiválasztott szövegszerkesztő egy üres állományt kap. Miután ezt az állományt elmentettük, a crontab programmal magától telepítésre kerül.

Ha a későbbiekben törölni akarjuk a felhasználónkhoz tartozó crontab állományt, akkor erre a célra használjuk a crontab -r kapcsolóját.

Ha kérdése van a FreeBSD-vel kapcsolatban, a következő címre írhat (angolul): <freebsd-questions@FreeBSD.org>.
Ha ezzel a dokumentummal kapcsolatban van kérdése, kérjük erre a címre írjon: <gabor@FreeBSD.org>.