2002 wurde das rc.d-System von
NetBSD zum Start von Systemdiensten in FreeBSD integriert.
Die zu diesem System gehörenden Dateien sind im
Verzeichnis /etc/rc.d
abgelegt.
Die Skripten in diesem Verzeichnis akzeptieren die
Optionen start
, stop
und restart
. Beispielsweise kann
sshd(8) mit dem nachstehenden Kommando neu gestartet
werden:
#
/etc/rc.d/sshd restart
Analog können Sie andere Dienste starten und stoppen.
Normalerweise werden die Dienste beim Systemstart über
Einträge in der Datei rc.conf(5) automatisch gestartet.
Der Network Address
Translation Dæmon wird zum Beispiel mit dem folgenden
Eintrag in /etc/rc.conf
aktiviert:
Wenn dort bereits die Zeile natd_enable="NO"
existiert, ändern Sie einfach NO
in
YES
. Die rc-Skripten starten, wie unten
beschrieben, auch abhängige Dienste.
Da das rcNG-System primär
zum automatischen Starten und Stoppen von Systemdiensten
dient, funktionieren die Optionen start
,
stop
und restart
nur,
wenn die entsprechenden Variablen in
/etc/rc.conf
gesetzt sind. Beispielsweise
funktioniert das Kommando sshd restart
nur dann, wenn in /etc/rc.conf
die
Variable sshd_enable
auf YES
gesetzt wurde. Wenn Sie die Optionen start
,
stop
oder restart
unabhängig von den Einstellungen in
/etc/rc.conf
benutzen wollen,
müssen Sie den Optionen mit dem Präfix
„one“ verwenden. Um beispielsweise
sshd
unabhängig von den
Einstellungen in /etc/rc.conf
neu
zu starten, benutzen Sie das nachstehende Kommando:
#
/etc/rc.d/sshd onerestart
Ob ein Dienst in /etc/rc.conf
aktiviert ist, können Sie leicht herausfinden, indem
Sie das entsprechende rc.d
-Skript
mit der Option rcvar
aufrufen. Ein
Administrator kann beispielsweise wie folgt prüfen, ob
der sshd
-Dienst in
/etc/rc.conf
aktiviert ist:
#
/etc/rc.d/sshd rcvar
# sshd
$sshd_enable=YESDie zweite Zeile (# sshd
) wird
vom Kommando sshd
ausgegeben; sie
kennzeichnet nicht die Eingabeaufforderung von
root
.
Ob ein Dienst läuft, kann mit der Option
status
abgefragt werden. Das folgende
Kommando überprüft, ob der sshd
auch wirklich gestartet wurde:
#
/etc/rc.d/sshd status
sshd is running as pid 433.Einige Dienste können über die Option
reload
neu initialisiert werden. Dazu wird
dem Dienst über ein Signal mitgeteilt,
dass er seine Konfigurationsdateien neu einlesen soll.
Oft wird dazu das Signal SIGHUP
verwendet. Beachten Sie aber, dass nicht alle Dienste diese
Option unterstützen.
Die meisten Systemdienste werden beim Systemstart vom
rc.d-System gestartet. Zum Beispiel
aktiviert das Skript bgfsck
die Prüfung
von Dateisystemen im Hintergrund. Das Skript gibt die folgende
Meldung aus, wenn es gestartet wird:
Viele Systemdienste hängen von anderen Diensten
ab. NIS und andere RPC-basierende Systeme hängen
beispielsweise von dem rpcbind
-Dienst
(portmapper) ab. Im Kopf der Startskripten befinden sich
die Informationen über Abhängigkeiten von anderen
Diensten und weitere Metadaten.Mithilfe dieser Daten
bestimmt das Programm rcorder(8) beim Systemstart die
Startreihenfolge der Dienste.
Folgende Schlüsselwörter müssen im Kopf aller Startskripten verwendet werden (da sie von rc.subr(8) zum „Aktivieren“ des Startskripts benötigt werden:
PROVIDE
: Gibt die Namen der Dienste an,
die mit dieser Datei zur Verfügung gestellt werden.
Die folgenden Schlüsselwörter können im Kopf des Startskripts angegeben werden. Sie sind zwar nicht unbedingt notwendig, sind aber hilfreich beim Umgang mit rcorder(8):
REQUIRE
: Gibt die Namen der Dienste an,
von denen dieser Dienst abhängt. Diese Datei wird
nach den angegebenen Diensten
ausgeführt.
BEFORE
: Zählt Dienste auf,
die auf diesen Dienst angewiesen sind. Diese Datei wird
vor den angegebenen Diensten
ausgeführt.
Durch das Verwenden dieser Schlüsselwörter kann ein Administrator die Startreihenfolge von Systemdiensten feingranuliert steuern, ohne mit den Schwierigkeiten des „runlevel“-Systems anderer UNIX® Systeme kämpfen zu müssen.
Weitere Informationen über das
rc.d
-System finden sich in den
Manualpages zu rc(8) sowie rc.subr(8). Wenn Sie
Ihre eigenen rc.d
-Skripte schreiben
wollen, sollten Sie den Artikel
Practical rc.d
scripting in BSD lesen.
Wenn Sie Fragen zu FreeBSD haben, schicken Sie eine E-Mail an
<de-bsd-questions@de.FreeBSD.org>.
Wenn Sie Fragen zu dieser Dokumentation haben, schicken Sie eine E-Mail an
<de-bsd-translators@de.FreeBSD.org>.