ubuntuusers.de

Du betrachtest eine alte Revision dieser Wikiseite.

Dienste

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

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:

  • Mit Upstart versuchte Canonical, eine selbstentwickelte Alternative zum herkömmlichen SysVinit-System zu etablieren. Ab Ubuntu 6.10 bis einschließlich Ubuntu 14.10 kommt Upstart als Standard-Init-System zum Einsatz. Allerdings sind längst nicht alle (Server-)Dienste umgestellt worden. Da Upstart abwärtskompatibel zu SysVinit ist, wird weiterhin ein Großteil der Serverdienste über SysVinit verwaltet.

  • In Konkurrenz zu Upstart entstand mit systemd ein weiteres Init-System. Nach und nach sind viele große Linux-Distributionen einschließlich Debian auf systemd gewechselt. Schließlich wurde bekanntgegeben, dass auch Ubuntu mittelfristig auf systemd umstellt. Seit Ubuntu 15.04 ist systemd bei Ubuntu vorinstalliert. Die weitere Entwicklung von Upstart wurde eingefroren. Übergangsweise wird es aber bei manchen Ubuntu-Versionen noch im Hintergrund benutzt.

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.

Ab 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:

  • Systemd: /etc/systemd/system/ (benutzerdefinierte) oder /lib/systemd/system/ (systemeigene)

  • Upstart: .conf-Dateien im Ordner /etc/init/

  • SysVinit: alle Dateien im Ordner /etc/init.d/

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.

Diese Revision wurde am 11. Dezember 2017 20:41 von BillMaier erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: System, Server, Übersicht