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 a /etc/rc.d könyvtárban található állományokról. A legtöbbjük olyan alapvető szolgáltatások, amelyeket 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 megadott 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 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 a feladatukat, ha a nekik megfelelő változókat beállítottuk az /etc/rc.conf állományban. Tehát például a 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 le tudjuk ellenőrizni, 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 a 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 a 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 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ést 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):

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:

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érlelni 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 meglevőeken, akkor ez a cikk (angolul) segítségünkre lehet.

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