FreeBSD verwendet die vom rc(8)-System bereit gestellten
Startskripten beim Systemstart und für die Verwaltung von
Diensten. Die Skripte sind in /etc/rc.d
abgelegt und bieten grundlegende Dienste an, die über die
Optionen start
, stop
und
restart
des service(8) Kommandos
kontrolliert werden können. Beispielsweise kann sshd(8)
mit dem nachstehenden Kommando neu gestartet werden:
#
service 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.
natd(8) wird zum Beispiel mit dem folgenden
Eintrag in /etc/rc.conf
aktiviert:
natd_enable="YES"
Wenn dort bereits die Zeile
natd_enable="NO"
existiert, ändern Sie
NO
in YES
. Die
rc(8)-Skripten starten, wie unten beschrieben, auch
abhängige Dienste.
Da das rc(8)-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 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:
#
service sshd onerestart
Ob ein Dienst in /etc/rc.conf
aktiviert ist, können Sie herausfinden, indem
Sie das entsprechende rc(8)-Skript
mit der Option rcvar
aufrufen. Dieses Beispiel
prüft, ob der sshd
-Dienst in
/etc/rc.conf
aktiviert ist:
#
service sshd rcvar
# sshd # sshd_enable="YES" # (default: "")
Die Zeile # sshd
wird von dem Kommando
ausgegeben; sie kennzeichnet nicht die Eingabeaufforderung von
root
.
Ob ein Dienst läuft, kann mit status
abgefragt werden. Das folgende
Kommando überprüft, ob sshd
auch wirklich gestartet wurde:
#
service 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(8)-System gestartet. Zum Beispiel aktiviert das Skript
/etc/rc.d/bgfsck
die Prüfung von
Dateisystemen im Hintergrund. Das Skript gibt die folgende
Meldung aus, wenn es gestartet wird:
Starting background file system checks in 60 seconds.
Dieses Skript wird während des Systemstarts ausgeführt und führt eine Überprüfung der Dateisysteme im Hintergrund durch.
Viele Systemdienste hängen von anderen Diensten
ab. yp(8) und andere RPC-basierende Systeme hängen
beispielsweise von dem rpcbind
-Dienst
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. Ein Skript, das dieses
Schlüsselwort enthält wird nach den
angegebenen Diensten ausgeführt.
BEFORE
: Zählt Dienste auf,
die auf diesen Dienst angewiesen sind. Ein Skript, dass
dieses Schlüsselwort enthält 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(8)-System finden Sie in rc(8) und
rc.subr(8). Wenn Sie eigene
rc.d
-Skripte schreiben wollen, sollten Sie
diesen Artikel lesen.
Informationen zur Systemkonfiguration sind hauptsächlich
in /etc/rc.conf
, die meist beim Start
des Systems verwendet wird, abgelegt. Sie enthält die
Konfigurationen für die
rc*
Dateien.
In rc.conf
werden die Vorgabewerte
aus /etc/defaults/rc.conf
überschrieben.
Die Vorgabedatei sollte nicht editiert werden. Stattdessen
sollten alle systemspezifischen Änderungen in
rc.conf
vorgenommen werden.
Um den administrativen Aufwand gering zu halten,
existieren in geclusterten Anwendungen mehrere Strategien,
globale Konfigurationen von systemspezifischen Konfigurationen
zu trennen. Der empfohlene Weg hält die globale Konfiguration
in einer separaten Datei z.B.
/etc/rc.conf.local
. Zum Beispiel
so:
/etc/rc.conf
:
sshd_enable="YES" keyrate="fast" defaultrouter="10.1.1.254"
/etc/rc.conf.local
:
hostname="node1.example.org" ifconfig_fxp0="inet 10.1.1.1/8"
/etc/rc.conf
kann dann auf jedes
System mit rsync oder
puppet verteilt werden,
während /etc/rc.conf.local
dabei
systemspezifisch bleibt.
Bei einem Upgrade des Systems wird
/etc/rc.conf
nicht überschrieben, so dass
die Systemkonfiguration erhalten bleibt.
/etc/rc.conf
und
/etc/rc.conf.local
werden von
sh(1) gelesen. Dies erlaubt es dem
Systemadministrator, komplexe Konfigurationsszenarien zu
erstellen. Lesen Sie rc.conf(5), um weitere
Informationen zu diesem Thema zu erhalten.
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>.