FreeBSD kézikönyv
Előző | Fejezet 11. Beállítás és finomhangolás | Következő

# 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 $
    #
    #
    SHELL=/bin/sh
    PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin
    HOME=/var/log
    #
    #
    #minute	hour	day	month	wday	who	command
    #
    #
    */5	*	*	*	*	root	/usr/libexec/atrun

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

Előző | Tartalom | Következő
Szolgáltatások indítása | Fel | Az rc használata FreeBSD alatt

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