Dienste

Achtung!

Diese Seite wird aktuell überarbeitet. Bitte hier keine Änderungen mehr vornehmen, sondern in Baustelle/Dienste!

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

  1. Ein Terminal öffnen

  2. Installation von Programmen

Inhaltsverzeichnis
  1. Init-Systeme
  2. Starten und Beenden von Diensten
  3. Deaktivieren von Diensten
  4. Eigenes Start-/Stopp-Skript erstellen
  5. GUIs zum Bearbeiten von Diensten
  6. Links

Wiki/Icons/service.png Ein Dienst ist ein Programm, das beim Start des Rechners automatisch ausgeführt wird und im Hintergrund darauf wartet, seine Aufgabe zu erledigen. 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 wird durch Dienste erledigt. Prinzipiell gibt es also zwei Arten von Diensten: interne für beim Systemstart relevante bzw. hardwarenahe Aufgaben und vom Benutzer nachinstallierte Dienste, zu denen in der Regel alle Serverdienste gehören.

Im Computer-Jargon werden Dienste traditionell auch als "Daemon" (im Sinne eines guten Geistes) bezeichnet. Der Buchstabe d findet sich daher häufig auch als letzter Buchstabe in der Programmbezeichnung wieder, so z.B. bei der Serverkomponente sshd von SSH.

Init-Systeme

Um das geordnete Starten und Beenden der Dienste kümmert sich ein Init-System. Dies ist normalerweise der erste gestartete Prozess und hat damit die Prozess-ID 1.

Ursprünglich übernahm diese Aufgabe auf Linux-Systemen SysVinit. Dieses startet die Dienste nacheinander in einer festgelegten Reihenfolge. Das macht den Startvorgang zuverlässig und leicht kontrollierbar, aber auch langsam. Mit dem parallelen Start von Diensten lässt sich der Startvorgang entscheidend beschleunigen, was insbesondere auf Desktop-Rechnern und Notebooks praktische Vorteile bietet. Es gibt daher zwei Neuentwicklungen, die bei Ubuntu SysVinit ergänzt bzw. abgelöst haben:

Bei der Diagnose, welches Init-System aktuell zum Einsatz kommt, kann der Befehl:

cat /proc/1/comm 

weiterhelfen. Die Antwort lautet entweder systemd oder init, wobei letzteres bei Ubuntu für die Kombination aus Upstart und SysVinit steht.

Starten und Beenden von Diensten

Möchte man Dienste von Hand beenden, (neu-)starten oder den Status abfragen, so gibt es hierfür den Befehl service. Dieser erleichtert bis einschließlich Ubuntu 14.10 den Umgang bei Hybridsystemen mit Upstart und SysVinit, da der Befehl beide Systeme nach einem Dienst mit dem entsprechenden Namen durchsucht und den Befehl automatisch an das richtige System weiterleitet. Schematisch erfolgt der Aufruf nach folgendem Muster:

sudo service DIENSTNAME [OPTION] 

wobei start, stop, restart, status usw. für die möglichen Optionen bzw. Aktionen stehen. Sind diese Aktionen unbekannt, lässt man sie einfach weg. Dann werden die vorhandenen Möglichkeiten auf der Kommandozeile angezeigt.

Seit Ubuntu 15.04 und dem Einsatz von systemd gilt eine andere Syntax:

sudo systemctl [BEFEHL] [UNIT.service] 

Hierbei entspricht UNIT dem bisher verwendeten DIENSTNAME bei Serverdiensten (die zusätzlich durch die Endung .service gekennzeichnet sind).

Da je nach Ubuntu-Version unter Umständen alle drei Init-Systeme parallel genutzt werden, findet man Start-/Stopp-Skripte an folgenden Orten:

Im Idealfall verrät bereits der Name des Skripts, welcher Dienst dahintersteckt. Ansonsten muss man einen Blick in die jeweilige Datei werfen (entweder mit einem Editor oder dem Befehl "cat /PFAD/ZUR/DATEI | less").

Deaktivieren von Diensten

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 unnötigen 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.

Das konkrete Verfahren ist wiederum davon abhängig, welches Init-System zum Einsatz kommt und ist in den jeweiligen Artikeln nachzuschlagen.

Eigenes Start-/Stopp-Skript erstellen

Möchte man lediglich beim Hochfahren ein Programm ausführen oder einen Dienst starten, so ist ein Eintrag in der Datei /etc/rc.local die deutlich unkompliziertere Variante. Soll jedoch genauer konfiguriert werden, wie der laufende Dienst beim Herunterfahren beendet wird, so ist ein vollständiges Start-/Stopp-Skript nötig. Auch hier ist wieder eine Unterscheidung nach Init-System notwendig.

Mehr Informationen zum Erstellen eigener Start-/Stopp-Skripte sind in den Artikeln SysVinit , Upstart und systemd/Units zu finden.

GUIs zum Bearbeiten von Diensten

Es gab in der Vergangenheit verschiedene grafische Oberflächen (GUIs) zum (De-)Aktivieren von Diensten. Diese Programme beschränken sich allerdings alle auf Systeme mit SysVinit oder Dienste, deren Start-/Stopp-Skripte für dieses System ausgelegt sind. Für Upstart existierte nie etwas Vergleichbares. Erst systemd bietet wieder eine grafische Oberfläche zur Verwaltung von Diensten.