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):
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é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>.