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:
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=YESA 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:
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:
Az üzenet fordítása:
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.
Ha kérdése van a FreeBSD-vel kapcsolatban, a
következő címre írhat (angolul):
<questions@FreeBSD.org>.
Ha ezzel a dokumentummal kapcsolatban van kérdése, kérjük erre a címre írjon:
<gabor@FreeBSD.org>.