FreeBSD handboek
Terug | Hoofdstuk 12. Instellingen en optimalisatie | Volgende

# 12.7. Gebruik van rc met FreeBSD

Geschreven door Tom Rhodes.

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:

    # /etc/rc.d/sshd 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:

    # /etc/rc.d/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`:

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

> Opmerking: 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:

    # /etc/rc.d/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.

Terug | Begin | Volgende
`cron` instellen | Omhoog | Netwerkkaarten instellen