11.5. Start von Diensten

Beigetragen von Tom Rhodes.

Viele Benutzer installieren Software Dritter auf FreeBSD mithilfe der Ports-Sammlung. Häufig soll die Software bei einem Systemstart mitgestartet werden. Beispielsweise sollen die Dienste mail/postfix oder www/apache13 nach einem Systemstart laufen. Dieser Abschnitt stellt die Startprozeduren für Software Dritter vor.

Unter FreeBSD werden die meisten der im System enthaltenen Dienste wie cron(8) mithilfe von Systemskripten gestartet. Diese Skripten sind abhängig von der FreeBSD- oder Hersteller-Version. Allerdings kann ein Dienst mit einfachen Skripten gestartet werden.

Vor der Einführung von rc.d legten Anwendungen einfach ein Startskript im Verzeichnis /usr/local/etc/rc.d ab. Das Startskript wurde von den Systemskripten in den letzten Phasen des Systemstarts ausgeführt.

Obwohl bereits viele Startskripten auf das neue rc.d-System umgestellt wurden, gibt es noch Anwendungen, die ein Startskript im eben erwähnten Verzeichnis benötigen. In diesem Fall weisen die Skripte kleinere Unterschiede auf. Vor FreeBSD 5.1 wurde der alte Stil verwendet, obwohl in den meisten Fällen auch der neue Stil problemlos funktionieren würde.

Die Startskripten müssen das Suffix .sh tragen und ausführbar sein. Sie machen ein Skript ausführbar, indem Sie mit chmod die Rechte 755 vergeben. Das Skript sollte die Optionen start und stop akzeptieren, um die Anwendung zu starten und zu stoppen.

Ein einfaches Startskript sieht wie folgt aus:

#!/bin/sh
echo -n ' utility'

case "$1" in
start)
        /usr/local/bin/utility
        ;;
stop)
        kill -9 `cat /var/run/utility.pid`
        ;;
*)
        echo "Usage: `basename $0` {start|stop}" >&2
        exit 64
        ;;
esac

exit 0

Das Skript akzeptiert die Optionen start und stop zum Starten und Stoppen einer Anwendung mit Namen utility.

Manuell wird die Anwendung mit dem nachstehenden Kommando gestartet:

# /usr/local/etc/rc.d/utility.sh start

Obwohl nicht jede Anwendung die Zeile in rc.conf benötigt, akzeptieren immer mehr Ports diese Konfiguration. Prüfen Sie die Ausgaben während der Installation einer Anwendung, um herauszufinden, wie die Anwendung gestartet wird. Einige Anwendungen stellen Startskripten bereit, die das rc.d-System (wird im nächsten Abschnitt besprochen) verwenden.

11.5.1. Dienste über das rc.d-System starten

Mit rc.d lässt sich der Start von Anwendungen besser steuern als mit den vorher besprochenen Startskripten. Mit den im Abschnitt rc.d besprochenen Schlüsselwörtern können Anwendungen in einer bestimmten Reihenfolge (zum Beispiel nach DNS) gestartet werden und Optionen können in rc.conf statt fest im Startskript der Anwendung festgelegt werden. Ein einfaches Startskript sieht wie folgt aus:

#!/bin/sh
#
# PROVIDE: utility
# REQUIRE: DAEMON
# KEYWORD: shutdown

#
# DO NOT CHANGE THESE DEFAULT VALUES HERE
# SET THEM IN THE /etc/rc.conf FILE
#
utility_enable=${utility_enable-"NO"}
utility_flags=${utility_flags-""}
utility_pidfile=${utility_pidfile-"/var/run/utility.pid"}

. /etc/rc.subr

name="utility"
rcvar=`set_rcvar`
command="/usr/local/sbin/utility"

load_rc_config $name

pidfile="${utility_pidfile}"

start_cmd="echo \"Starting ${name}.\"; /usr/bin/nice -5 ${command} ${utility_flags} ${command_args}"

run_rc_command "$1"

Dieses Skript stellt sicher, dass utility nach den daemon-Diensten gestartet wird. Es stellt auch eine Methode bereit, die Prozess-ID (PID) der Anwendung in einer Datei zu speichern.

In /etc/rc.conf könnte für diese Anwendung die folgende Zeile stehen:

utility_enable="YES"

Die neue Methode erleichtert den Umgang mit Kommandozeilenargumenten, bindet Funktionen aus /etc/rc.subr ein, ist kompatibel zum Werkzeug rcorder(8) und lässt sich über rc.conf leichter konfigurieren.

11.5.2. Andere Arten, um Dienste zu starten

Dienste wie POP3 oder IMAP können über den inetd(8) gestartet werden. Nach der Installation der Anwendung aus der Ports-Sammlung muss eine Konfigurationszeile in der Datei /etc/inetd.conf hinzugefügt oder aktiviert werden. Der Abschnitt Abschnitt 27.2 beschreibt den inetd und dessen Konfiguration.

Systemdienste können auch mit cron(8) gestartet werden. Dieser Ansatz hat einige Vorteile; nicht zuletzt, weil cron(8) die Prozesse unter dem Eigentümer der crontab startet, ist es möglich, dass Dienste von nicht-root Benutzern gestartet und gepflegt werden können.

Dies nutzt eine Eigenschaft von cron(8): Für die Zeitangabe kann @reboot eingesetzt werden. Damit wird das Kommando gestartet, wenn cron(8) kurz nach dem Systemboot gestartet wird.

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