ubuntuusers.de

Hinweis: Dies ist ein statischer Snapshot unseres Wikis vom 25. März 2013 und kann daher nicht bearbeitet werden. Der aktuelle Artikel ist unter wiki.ubuntuusers.de zu finden.

Dienste

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Hinweis:

Unter Ubuntu unterscheidet sich der Systemstart und damit auch die Verwaltung einiger Dienste grundlegend von anderen Linux-Distributionen. Weitere Informationen finden sich im Artikel Upstart. Allerdings sind viele der in diesem Artikel genannten Informationen und Beispiele weiterhin gültig, da längst noch nicht alle Dienste umgestellt sind.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

Was sind Dienste und Runlevel?

Wiki/Icons/service.png Ein Dienst ist ein Programm, das beim Starten des Rechners automatisch ausgeführt wird und im Hintergrund darauf wartet, seine Arbeit zu tun. Ein Dienst besitzt meist keine grafische Oberfläche und arbeitet ohne Interaktion des Benutzers. Die bekanntesten Dienste sind sicherlich Web-, Mail- oder Datenbank-Server. Aber auch die Hardwareerkennung oder das automatische Einbinden (Mounten) von z.B. USB-Sticks sind Dienste. Im Computer-Jargon werden Dienste auch als "Daemon" (im Sinne eines guten Geistes) bezeichnet.

Das heißt also, dass z.B. ein Apache- oder Samba-Server bei jedem Bootvorgang gestartet wird. Manche Dienste sind allerdings uninteressant oder werden eventuell gar nicht benötigt. In diesem Artikel soll gezeigt werden, was die verschiedenen Dienste machen und wie man diese den eigenen Bedürfnissen anpasst. Nun aber erst einmal zur grauen Theorie.

Linux-Systeme benutzen normalerweise das klassische SysV-Init-System und kennen verschiedene Zustände (Runlevel). In diesen Runleveln ist definiert, ob und wann ein Dienst automatisch gestartet bzw. gestoppt werden muss. Der Standard-Runlevel unter Debian und Ubuntu ist 2. Dieser ist als "lokaler Mehrbenutzerbetrieb ohne Netzwerk mit ausschließlich lokalen Ressourcen" definiert. Unter Ubuntu wird hier im Gegensatz aber auch der Netzwerkbetrieb konfiguriert.

Mit Upstart versucht Ubuntu inzwischen, eine Alternative zum herkömmlichen SysV-Init-System zu etablieren. Denn mit dem parallelen Start von Diensten lässt sich der Startvorgang entscheidend beschleunigen, was insbesondere auf Desktop-Rechnern und Notebooks praktische Vorteile hat.

Achtung!

Umsteiger von anderen Betriebssystemen meinen oft, Dienste deaktivieren zu müssen, um das System zu "optimieren". Ubuntu installiert ein relativ schlankes System, auf dem keine wirklich unnützen Dienste laufen. Stellt man unüberlegt wichtige Dienste ab, so kann dies dazu führen, dass das System unbenutzbar wird. Daher sollte man sich vor dem Deaktivieren genau informieren, welche Auswirkungen das haben könnte und ob dies wirklich notwendig ist.

Start-/Stop-Skript und Runlevel

Jeder Dienst besitzt ein Start-/Stop-Skript im Verzeichnis /etc/init.d/. Die Skripte enthalten Befehle, um einen Dienst zu starten bzw. zu beenden. Sie können von Hand oder automatisch beim Booten oder Herunterfahren des Systems aufgerufen werden. Dazu kann das Start-/Stop-Skript inklusive einer Option ausgeführt werden. Beispiel:

sudo /etc/init.d/DIENSTNAME [start|stop|restart|...] 

Alternativ kann auch folgende Syntax verwendet werden:

sudo service DIENSTNAME [start|stop|restart|...] 

Als konkretes Beispiel hier der Befehl, um den Webserver Apache2 zu starten:

sudo /etc/init.d/apache2 start 

Wenn jetzt ein Start-/Stop-Skript automatisch beim Booten ausgeführt werden soll, so wird es einfach nur in den entsprechenden Runleveln verlinkt. Jedem dieser Runlevel ist ein Verzeichnis unterhalb von /etc/ zugeordnet. Dies sind:

  • /etc/rc0.d - Während das System herunterfährt

  • /etc/rcS.d - Während des Bootens ausführen

  • /etc/rc1.d - Arbeiten als einzelner Benutzer

  • /etc/rc2.d - Mehrbenutzerbetrieb inkl. Netzwerk

  • /etc/rc3.d bis /etc/rc5.d - bei Ubuntu nicht genutzt

  • /etc/rc6.d - Während das System neu startet

Jedes Start-/Stop-Skript besitzt zwei Arten von Verknüpfungen ("Links"): die einen beginnen mit "S" (Start) und die anderen mit "K" (Kill). Beim Betreten eines Runlevels werden zunächst die "K"-Links zum Beenden, danach die "S"-Links zum Starten von Diensten ausgeführt. Soll nun etwa ein Dienst nur im Runlevel 2 laufen, so liegt typischerweise in /etc/rc2.d ein "S"-Link, in allen anderen Runlevel-Verzeichnissen dagegen ein "K"-Link.

Die gewünschte Reihenfolge innerhalb der Start- oder Stop-Sequenz wird durch eine Nummerierung nach dem "S" bzw. "K" im Linknamen festgelegt. So wird z.B. "S10irgendwas" vor "S20wasanderes" ausgeführt.

Eigenes Start-/Stop-Skript erstellen

Man kann natürlich eigene Start/Stop-Skripte erstellen. Dazu sollte man sich die bereits in /etc/init.d/ liegenden Skripte als Vorbild nehmen oder die offizielle Vorlage /etc/init.d/skeleton als Ausgangsbasis nutzen.

Wem die Start-/Stop-Skripte und die offizielle Vorlage zu komplex sind, der kann sich ein relativ einfaches Start-/Stop-Skript für fast jeden Zweck selbst schreiben. Man benötigt lediglich eine Datei, die auf folgendem Beispiel basiert:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#! /bin/sh
### BEGIN INIT INFO
# Provides:          Was macht das Skript?
# Required-Start:    
# Required-Stop:     
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Kurze Beschreibung
# Description:       Längere Bechreibung
### END INIT INFO
# Author: Name <email@domain.tld>

# Aktionen
case "$1" in
    start)
        /opt/beispiel start
        ;;
    stop)
        /opt/beispiel stop
        ;;
    restart)
        /opt/beispiel restart
        ;;
esac

exit 0

Der Kommentar-Text im Kopfteil der Datei ist sehr wichtig und wird vom Befehl update-rc.d ausgewertet. Dieser Kommentar sollte angepasst, aber nicht gelöscht werden! Mehr zu korrekten LSB-InitSkripten findet man im Debian Wiki {en}. Die Datei speichert man z. B. in /etc/init.d/beispiel und macht die Datei per

sudo chmod 755 /etc/init.d/beispiel 

ausführbar. Anschließend fügt man das Skript mit dem Befehl update-rc.d in die entsprechenden Runlevel ein.

Bearbeiten von Diensten per Hand

Debian und Ubuntu besitzt mit dem Befehl update-rc.d ein mächtiges Werkzeug, um Dienste in den einzelnen Runleveln zu aktivieren bzw. zu deaktivieren. Am Beispiel von pcmciautils wird nun erklärt, wie man einen Dienst aus dem aktuellen Runlevel entfernen und wieder hinzufügen kann.

Das Entfernen ist nicht sonderlich schwer. Man öffnet ein Terminalfenster [1] und gibt den Befehl:

sudo update-rc.d -f pcmciautils remove 

ein. Das Kommando liefert hierbei beispielsweise folgende Ausgabe:

 Removing any system startup links for /etc/init.d/pcmciautils ...
   /etc/rc0.d/K88pcmciautils
   /etc/rc6.d/K88pcmciautils
   /etc/rcS.d/S13pcmciautils

Hier erkennt man die oben beschriebenen Hintergründe. Die Links zum Start-/Stop-Skript von pcmciautils - /etc/init.d/pcmciautils - werden aus den Runlevels gelöscht. Möchte man den Dienste wieder in die dafür vorgesehenen Runlevel einfügen, so macht man das mit dem Befehl

sudo update-rc.d pcmciautils defaults 

Dabei werden die Links wieder angelegt. Nachdem man einen Dienst aus den Runleveln entfernt hat, sollte man ihn abschließend von Hand stoppen

sudo invoke-rc.d pcmciautils stop 

Sonst würde er beim nächsten Herunterfahren des Systems nicht sauber beendet werden und evtl. drohen Datenverluste.

Experten-Info:

Dieser Schritt allein entfernt den Dienst leider nicht für immer. Bei einer Aktualisierung (Update) des entsprechenden Pakets (hier also pcmciautils bzw. pcmcia-cs) merkt die Paketverwaltung, dass diese Links nicht mehr existieren, und legt sie wieder an, da das System nun davon ausgeht, dass das Paket zum ersten Mal installiert werden würde. Der Weg, um einen Dienst ein für alle Mal zu deaktivieren, besteht daher darin, die Verknüpfungen nur zu entschärfen.

Verknüpfungen entschärfen

Das vorangegangene Löschen des Dienstes liefert die entscheidenden Informationen, wo die Start- und Stop-Skripte verlinkt werden müssen (siehe remove-Befehl oben). Daraufhin legt man selbständig passende Links mit den soeben erworbenen Informationen an.

sudo update-rc.d pcmciautils stop LINK-NUMMER RUNLEVEL .     # allgemein; Teil von "stop" bis "." ggf. für verschiedene LINK-NUMMERn wiederholen
sudo update-rc.d pcmciautils stop 13 S . stop 88 0 6 .       # Beispiel (vergleiche remove-Befehl oben) 

Um pcmciautils wieder als Dienst einzufügen, entsprechend wieder

sudo update-rc.d -f pcmciautils remove
sudo update-rc.d pcmciautils start 13 S . stop 88 0 6 . 

eingeben.

GUIs zum Bearbeiten von Diensten

Es gibt verschiedene grafische Oberflächen (GUIs) zum (De-)Aktivieren von Diensten.

Kommandozeile

Hinweis:

Die Entwicklung von rcconf und sysv-rc-conf wurde offensichtlich eingestellt. Siehe dazu die Versionsnummern und Changelogs (Änderungsprotokolle) der Pakete bzw. packages.debian.org {de}.

./rcconf.png

rcconf

Für die Kommandozeile gibt es das Programm rcconf. Der Vorteil ist natürlich, dass man keinen XServer bzw. keine grafische Oberfläche braucht, um schnell Dienste bearbeiten zu können. Daher eignet es sich wunderbar für Server. rcconf ist in den offiziellen Paketquellen enthalten. Es muss lediglich folgendes Paket über die Paketverwaltung installiert [2] werden:

  • rcconf (universe)

Wiki/Vorlagen/Installbutton/button.png mit apturl

Paketliste zum Kopieren:

sudo apt-get install rcconf 

sudo aptitude install rcconf 

./sysv-rc-conf.png

sysv-rc-conf

Eine Erweiterung von "rcconf" ist "sysv-rc-conf", mit dem man nicht nur die Dienste des aktuellen Runlevels bearbeiten kann, sondern alle Dienste - also Vorsicht! Das Programm wird durch das Paket

  • sysv-rc-conf (universe)

Wiki/Vorlagen/Installbutton/button.png mit apturl

Paketliste zum Kopieren:

sudo apt-get install sysv-rc-conf 

sudo aptitude install sysv-rc-conf 

bereitgestellt.

GNOME

Mit Ubuntu 9.10 wurden sämtliche ehemaligen Einstellungsmöglichkeiten unter "System -> Systemverwaltung" entfernt. Wer Dienste weiterhin wie gewohnt grafisch konfigurieren möchte, muss auf den Boot-Up-Manager ausweichen.

BUM - Boot-Up-Manager

Hinweis:

Die Entwicklung von BUM wurde offensichtlich eingestellt. Ubuntu 10.04 bis 12.10 verwenden die Version 2.5.2-1 des bum-Pakets vom August 2009 (Changelog {en}). Auf der Entwickler-Website gibt es auch keine neuere Version.

./gnome-bum.png Um BUM {en} nutzen zu können, installiert [1] man das Paket

  • bum (universe)

Wiki/Vorlagen/Installbutton/button.png mit apturl

Paketliste zum Kopieren:

sudo apt-get install bum 

sudo aptitude install bum 

Nach der Installation, kann man BUM unter

  • "System -> Systemverwaltung -> BootUp-Manager"

finden.

./kde-systemdienste.png

KDE

Natürlich lassen sich die Dienste auch unter KDE bearbeiten. Das Programm dazu findet sich unter

Dienste können einfach per Mausklick ausgewählt werden. Im Fenster rechts findet sich dazu (von oben nach unten) eine kurze Beschreibung des Dienstes, eine Option zum Feststellen, ob der Dienst beim Booten gestartet werden soll, der aktuelle Status sowie Optionen zum "Starten" und "Beenden".

./Xfce-Dienste.png

Xfce

In der Desktopumgebung Xubuntu konnte man früher die Dienste unter

  • "Applications -> System -> Dienste"

regeln. Neuere Xubuntu-Versionen enthalten diese Möglichkeit nicht mehr. Die einzelnen Dienste ließen sich leicht (de-)aktivieren. Die Einstellungen betrafen auch das Startverhalten. Sofern ein Dienst deaktiviert wurde, stand er beim nächsten Systemstart nicht zur Verfügung.

Welcher Dienst macht was?

Im Artikel Dienste/Erläuterung sind einige Dienste und ihre Bedeutung aufgeführt.

ubuntuusers.local › WikiDienste