ubuntuusers.deWikiDienste

Dienste

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

Hinweis:

Mit Ubuntu 9.10 Karmic Koala hat sich der Systemstart und damit auch die Verwaltung einiger Dienste grundlegend geändert. 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 Mounten von z.B. USB-Sticks sind Dienste.

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 die graue 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 im Gegensatz dazu hier 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 aufgerufen werden oder automatisch beim Booten oder Herunterfahren des Systems. Dazu kann das Start-/Stop-Skript inklusive einer Option am Ende ausgeführt werden.

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 Runlevel verlinkt. Jedem dieser Runlevel ist ein Verzeichnis in /etc zugeordnet. Dies wären

  • /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 - 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 Nummern 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 dabei sehr wichtig und wird vom Befehl update-rc.d verwendet. Er 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. Daraufhin legt man selbständig passende Links mit den soeben erworbenen Informationen an.

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

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 GUIs zum (De-)Aktivieren von Diensten.

Für die Konsole

./rcconf.png

rcconf

Für die Konsole gibt es das Programm rcconf. Der Vorteil ist natürlich, dass man keinen Xserver braucht, um schnell die Dienste bearbeiten zu können. Daher eignet es sich wunderbar für Server. rcconf ist in den normalen Ubuntu Quellen enthalten. Es muss lediglich ein Paket über die Paketverwaltung installiert [2] werden:

  • rcconf (universe)

Wiki/Vorlagen/Installbutton/button.png

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

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

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

  • bum (universe)

Wiki/Vorlagen/Installbutton/button.png

Nach der Installation, kann man BUM unter

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

finden.

KDE

./kde-systemdienste.png

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

./Xfce-Dienste.png

In der Desktopumgebung Xfce kann man die Dienste unter

  • "Applications -> System -> Dienste"

regeln. Die einzelnen Dienste lassen sich leicht (de-)aktivieren. Die Einstellungen betreffen auch das Startverhalten. Sofern ein Dienst deaktiviert wurde, steht er beim nächsten Systemstart nicht zur Verfügung. Mehr Informationen zu den automatisch startenden Diensten liefert der Artikel Dienste/Erläuterung.

Welcher Dienst macht was?

Auf der Seite Dienste/Erläuterung sind einige Dienste und ihre Bedeutung aufgeführt.

Diese Revision wurde am 14. Juni 2011 um 00:39 Uhr von aasche erstellt.
Dieser Seite wurden folgende Begriffe zugeordnet: System, Server

Passwort vergessen?