Sinds 2002 gebruikt FreeBSD het NetBSD rc.d
systeem bij het opstarten van het systeem. Veel van de bestanden
in /etc/rc.d
zijn scripts voor
basisdiensten die werken met de opties start
,
stop
en restart
, analoog aan
hoe diensten die via een port of pakket zijn geïnstalleerd
gestart worden met de scripts in
/usr/local/etc/rc.d
. sshd(8) kan
bijvoorbeeld als volgt herstart worden:
#
service restart
Deze procedure is vrijwel gelijk voor andere diensten.
Uiteraard worden diensten meestal automatisch tijdens het
opstarten van de computer gestart zoals in rc.conf(5) staat.
Om de Network Address Translation daemon bij het opstarten te
laten starten is de volgende regel in
/etc/rc.conf
bijvoorbeeld voldoende:
natd_enable="YES"
Als er reeds een natd_enable="NO"
regel is,
kan NO
gewoon in YES
veranderd worden. De rc scripts starten, voor zover nodig,
automatisch andere afhankelijke diensten.
Omdat het rc.d
systeem in eerste
instantie bedoeld is om diensten te starten en stoppen bij het
opstarten en afsluiten van het systeem, werken de standaardopties
start
, stop
en
restart
alleen als de juiste variabelen in
/etc/rc.conf
zijn ingesteld. Het commando
sshd restart
alleen dan als
sshd_enable
de waarde YES
heeft in /etc/rc.conf
. Als er een dienst
gestart, gestopt of herstart moet worden, ongeacht de definities
in /etc/rc.conf
, moet het commando
voorafgegaan worden door “one”. Dus om
sshd
te herstarten ongeacht
de instellingen in /etc/rc.conf
, voldoet het
volgende commando:
#
service sshd onerestart
Het is eenvoudig te controleren of een dienst is ingeschakeld
is in /etc/rc.conf
door het bijpassende
rc.d
-script uit te voeren met de optie
rcvar
. Voor sshd
:
#
service sshd rcvar
# sshd $sshd_enable=YES
De tweede regel (# sshd
) is de
uitvoer van sshd
, geen
root
-console.
De optie status
wordt gebruikt om vast te
stellen of een dienst gestart is. Om bijvoorbeeld te controleren
of sshd
gestart is:
#
service sshd status
sshd is running as pid 433.
In sommige gevallen is het ook mogelijk om een dienst te
herstarten met de optie reload
. Dan wordt er
getracht een signaal te sturen aan een individuele dienst, waarbij
de dienst de bestanden met instellingen opnieuw in moet lezen.
Meestal komt dit neer op het verzenden van het signaal
SIGHUP
. Deze optie wordt niet door alle
diensten ondersteund.
Het rc.d-systeem wordt niet alleen
gebruikt voor netwerkdiensten, maar ook voor het merendeel van de
systeemstart. In dit kader is bijvoorbeeld het bestand
bgfsck
interessant. Als dit script wordt
uitgevoerd, wordt de volgende boodschap getoond:
Starting background file system checks in 60 seconds.
Dit script wordt dus gebruikt voor bestandssysteemcontrole in de achtergrond, hetgeen alleen tijdens de systeemstart gebeurt.
Veel systeemdiensten zijn afhankelijk van andere diensten om
correct te kunnen functioneren. Zo starten NIS en andere
RPC-gebaseerde diensten niet als de dienst
rpcbind
(portmapper) nog niet draait. Om dit
te stroomlijnen wordt informatie over afhankelijkheden en andere
metagegevens ingevoegd in het commentaar bovenaan het
opstartscript. Deze commentaarregels worden vervolgens tijdens de
systeemstart met rcorder(8) verwerkt om zo vast te stellen in
welke volgorde de systeemdiensten gestart moeten worden.
De volgende woorden moeten in alle opstartscripts staan (ze zijn benodigd door rc.subr(8) om het opstartscript te activeren):
PROVIDE
: geeft aan in welke diensten
dit bestand voorziet.
REQUIRE
: geeft aan welke andere
diensten vereist zijn voor deze dienst. Dit script wordt
uitgevoerd na de aangegeven
diensten.
BEFORE
: geeft diensten aan die
afhankelijk zijn van deze dienst. Dit bestand wordt
uitgevoerd vóór de
aangegeven diensten.
Met deze methode kan een systeembeheerder gemakkelijk systeemdiensten besturen, zonder gedoe met “runlevels” zoals bij sommige andere UNIX® systemen.
Meer informatie over het rc.d
-systeem
staat in rc(8) en rc.subr(8). Als u geïnteresseerd
bent in het schrijven van uw eigen
rc.d
-script of om de huidige scripts te
verbeteren is wellicht dit
artikel interessant.
All FreeBSD documents are available for download at https://download.freebsd.org/ftp/doc/
Questions that are not answered by the
documentation may be
sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.