6.23. Starten und Anhalten von Diensten (rc Skripten)
Zurück | Kapitel 6. Besonderheiten | Weiter

## 6.23. Starten und Anhalten von Diensten (rc Skripten)

`rc.d`-Skripten werden zum Starten von Diensten während des Systemstarts verwendet und um den Administratoren einen Standardweg zum Anhalten und Starten von Diensten zu bieten. Ports halten sich an dieses systemweite `rc.d`-Framework. Details zu deren Benutzung können im rc.d Kapitel des Handbuchs nachgelesen werden. Ausführliche Beschreibungen der verfügbaren Befehle stehen in rc(8) und rc.subr(8). Desweiteren gibt es einen Artikel zu praktischen Aspekten bezüglich `rc.d`-Skripten.

Ein oder mehrere `rc.d`-Skripten können installiert werden mittels:

USE_RC_SUBR= doormand

Skripten müssen im Unterverzeichnis `files` abgelegt und jeder Skript-Datei muss ein `.in`-Suffix hinzugefügt werden. Standardmäßige `SUB_LIST`-Ersetzungen werden für diese Dateien unterstützt. Die Verwendung von `%%PREFIX%%` und `%%LOCALBASE%%` wird dringend empfohlen. Näheres zu `SUB_LIST` kann im zugehörigen Kapitel nachgelesen werden.

Für FreeBSD-Versionen, die älter als 6.1-RELEASE sind, ist die Integration mittels rcorder(8) möglich, indem `USE_RCORDER` anstatt `USE_RC_SUBR` verwendet wird. Die Verwendung dieser Methode ist jedoch nur notwendig, wenn der Port in die Verzeichnisstruktur des Basissystems installiert werden kann oder der Dienst vor den `FILESYSTEMS`-Skripten in `rc.d` des Basissystems gestartet sein muss.

Seit FreeBSD 6.1-RELEASE sind lokale `rc.d`-Skripten (inklusive der durch Ports installierten) im allgemeinen rcorder(8) des Basissystems.

Beispiel eines einfachen `rc.d`-Skripts:

#!/bin/sh # $FreeBSD$ # # PROVIDE: doormand # REQUIRE: LOGIN # KEYWORD: shutdown # # Add the following lines to /etc/rc.conf.local or /etc/rc.conf # to enable this service: # # doormand_enable (bool): Set to NO by default. # Set it to YES to enable doormand. # doormand_config (path): Set to %%PREFIX%%/etc/doormand/doormand.cf # by default. # . /etc/rc.subr name="doormand" rcvar=${name}_enable command=%%PREFIX%%/sbin/${name} pidfile=/var/run/${name}.pid load_rc_config $name : ${doormand_enable="NO"} : ${doormand_config="%%PREFIX%%/etc/doormand/doormand.cf"} command_args="-p $pidfile -f $doormand_config" run_rc_command "$1"

Solange kein guter Grund dafür besteht, einen Dienst früher starten zu lassen, sollten alle Ports-Skripten

REQUIRE: LOGIN

verwenden. Falls der Port von einem bestimmten Benutzer (außer root) ausgeführt wird, ist dies zwingend.

KEYWORD: shutdown

ist im Skript oben deswegen vorhanden, weil der frei erfundene Beispiel-Port einen Dienst startet und dieser beim Herunterfahren des Systems sauber beendet werden sollte. Startete das Skript keinen persistenten Dienst, wäre dies nicht notwendig.

Für die Wertzuweisung von Variablen sollte "=" anstatt ":=" verwendet werden, da bei Ersterem nur auf einen Standardwert gesetzt wird, wenn die Variable vorher noch nicht gesetzt war, und bei Letzterem dieser gesetzt wird, auch wenn der Wert vorher Null gewesen ist. Ein Benutzer kann durchaus einen Ausdruck wie

doormand_flags=""

in seiner `rc.conf.local`-Datei stehen haben, und eine Variablenzuweisung mittels ":=" würde in diesem Fall die Benutzerdefinition überschreiben.

### Anmerkung:

Es sollten keine weiteren Skripten mit der `.sh`-Endung hinzugefügt werden. Irgendwann wird es ein Massenumbenennen aller Skripten im Repository geben, die immer noch diese Endung haben.

### 6.23.1. Anhalten und Deinstallieren von Diensten

Es ist möglich, dass ein Dienst während der Deinstallation automatisch angehalten wird. Es wird empfohlen dieses Verhalten nur zu implementieren, wenn es unbedingt erforderlich ist zuerst den Dienst anzuhalten und dann die Dateien zu entfernen. Normalerweise sollte es dem Administrator überlassen werden, ob ein Dienst durch Deinstallieren angehalten werden soll. Dies betrifft auch den Vorgang des Aktualisierens.

Der Datei `pkg-plist` sollte eine Zeile wie folgt zugefügt werden:

@stopdaemon doormand

Das Argument muss dabei mit dem Inhalt der `USE_RC_SUBR`-Variablen übereinstimmen.

Zurück | Nach oben | Weiter
6.22. Benutzung von Datenbanken | Zum Anfang | 6.24. Hinzufügen von Benutzern und Gruppen

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>.