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

# 11.7. Az rc használata FreeBSD alatt

Írta: Tom Rhodes.

A rendszer indítására a FreeBSD 2002-ben átvette a NetBSD `rc.d` rendszerét. Ezt a felhasználók könnyen felismerhetik az `/etc/rc.d` könyvtárban található állományokról. A legtöbbjük olyan alapvető szolgáltatás, amelyet a `start`, `stop` és `restart` paraméterekkel lehet vezérelni. Például az sshd(8) az alábbi paranccsal indítható újra:

    # /etc/rc.d/sshd restart

Ez az eljárás hasonló a többi szolgáltatás esetén is. Természetesen ezek a szolgáltatások általában maguktól indulnak el a rendszer indítása során az rc.conf(5) állományban megadottak szerint. Például ha a rendszerünk indulásakor szeretnénk aktiválni a hálózati címfordítással foglalatoskodó démont, akkor csak adjuk hozzá az `/etc/rc.conf` állományhoz a következő sort:

    natd_enable="YES"

Amennyiben a `natd_enable="NO"` sor már szerepel benne, akkor egyszerűen írjuk át a `NO` értéket `YES`-re. Ezután az rc szkriptek a rendszer következő indításakor a lentieknek megfelelően automatikusan elindítják a hozzá tartozó szolgáltatásokat is.

Mivel az `rc.d` rendszert elsősorban arra használják, hogy szolgáltatásokat indítsanak el vagy állítsanak le az operációs rendszerrel együtt, a szabványos `start`, `stop` és `restart` paraméterek csak abban az esetben látják el a feladatukat, ha a nekik megfelelő változókat beállítottuk az `/etc/rc.conf` állományban. Tehát például az `sshd restart` csak abban az esetben fog bármit is csinálni, ha az `/etc/rc.conf` állományban az `sshd_enable` változót a `YES` értékre állítottuk. Ha az `/etc/rc.conf` beállításaitól függetlenül kívánunk egy szolgáltatásnak `start`, `stop` vagy `restart` parancsot adni, akkor elé kell tennünk egy “one” szót. Például ha az `sshd` szolgáltatás újraindításához az `/etc/rc.conf` tartalmát figyelmen kívül akarjuk hagyni, akkor ezt a parancsot kell kiadnunk:

    # /etc/rc.d/sshd onerestart

Könnyen ellenőrizni tudjuk, hogy az adott szolgáltatás az `/etc/rc.conf` részéről engedélyezett-e, ha a neki megfelelő `rc.d` szkriptnek megadjuk az `rcvar` paramétert. Ennek segítségével például a rendszergazda így képes ellenőrizni, hogy az `sshd` szolgáltatást engedélyezi-e az `/etc/rc.conf`:

    # /etc/rc.d/sshd rcvar
    # sshd
    $sshd_enable=YES

> Megjegyzés: A második sor (`# sshd`) az `sshd` parancs kimenete, nem pedig a `root` parancssora.

A `status` paraméterrel kideríthetjük, hogy egy szolgáltatás aktív-e. Ezzel például így tudjuk ellenőrizni az `sshd` szolgáltatás működését:

    # /etc/rc.d/sshd status
    sshd is running as pid 433.

Az üzenet:

    Az sshd a 433-as azonosítóval fut.

Bizonyos esetekben a `reload` paraméter használatával lehetőségünk van a szolgáltatások újraindítására is. Ilyenkor a rendszer megpróbál egy olyan jelzést küldeni a szolgáltatásnak, amivel a konfigurációs állományainak újraolvasását kéri. A legtöbbször lényegében ez a `SIGHUP` jelzés kiküldését rejti magában. Ez a lehetőség azonban nem mindegyik szolgáltatás esetén érhető el.

Az `rc.d` rendszer nem csupán hálózati szolgáltatások esetén használatos, hanem nagyrészben hozzájárul a rendszer indításához is. Erre vegyük példának a `bgfsck` állományt. Amikor ez a szkript lefut, a következő üzenetet jeleníti meg:

    Starting background file system checks in 60 seconds.

Az üzenet fordítása:

    A háttérben 60 másodperc múlva megkezdődik az állományrendszerek ellenőrzése.

Ennek megfelelően tehát ezt az állományt az állományrendszerek háttérben folyó ellenőrzésére használják, ami pedig a rendszer indítása során fut le.

Számos rendszerszolgáltatás igényel a működéséhez további szolgáltatásokat. Például a NIS és más egyéb távoli eljáráshíváson alapú szolgáltatások egészen addig nem képesek elindulni, amíg az `rpcbind` (portmapper) szolgáltatást el nem indítjuk. Az ilyen jellegű gondok feloldására az indítószkriptek elején levő megjegyzésekben található egy kevés metainformáció a szkript működéséhez szükséges elemekre (függőségeire) vonatkozóan. A rendszer indítása közben az rcorder(8) nevű program képes a megjegyzések közt ezeket az információkat feldolgozni és ebből megállapítani, hogy a függőségi viszonyok betartásával milyen sorrendben kell elindítani a rendszer által felkínált szolgáltatásokat.

Ehhez a következő kulcsszavakat kell megadni az egyes indító szkriptek elején (az rc.subr(8) így tudja “engedélyezni” az indító szkriptet):

- `PROVIDE`: segítségével megmondjuk, hogy ez az állomány milyen szolgáltatásokat nyújt.

A következő kulcsszavak az egyes indítóállományok elején szerepelhetnek. Nem kell feltétlenül használnunk ezeket, de velük az rcorder(8) munkáját segíthetjük:

- `REQUIRE`: felsoroljuk azokat a szolgáltatásokat, amelyek a futásához kellenek. Az állomány tehát az itt megadott szolgáltatások után fog lefutni.

- `BEFORE`: felsoroljuk azokat a szolgáltatásokat, amelyek előtt futtatni kell ezt az állományt.

Az indító szkriptekben a kulcsszavak ügyes megválasztásával a rendszergazda nagyon finoman képes az indításkor végrehajtódó szkriptek sorrendjét szabályozni és a többi UNIX® alapú operációs rendszerből ismert “futtatási szintek” használata nélkül vezérelni a rendszerben megjelenő szolgáltatásokat.

Az `rc.d` rendszerről bővebben az rc(8) és rc.subr(8) man oldalakon olvashatunk. Ha szeretnénk saját `rc.d` szkripteket írni vagy javítani a már meglévőkön, akkor ez a cikk (angolul) segítségünkre lehet.

Előző | Tartalom | Következő
A `cron` segédprogram beállítása | Fel | A hálózati kártyák beállítása

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