Dienst
Dienste
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 auch Systemdienste genannt.
- Die Systemdienste werden vom Init-Prozeß (also bei Ubuntu systemd (als --system)) gestartet.
- vom Benutzer nachinstallierte Dienste, zu denen in der Regel alle Serverdienste gehören.
Im Computer-Jargon werden Dienste traditionell auch als Daemon 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.* Seit einiger Zeit sind viele große Linux-Distributionen einschließlich Debian auf systemd gewechselt, welches bei Ubuntu auch seit Version Ubuntu 15.04 zum Einsatz kommt.
- Bis einschließlich Ubuntu 14.10 versuchte Canonical, mit Archiv/Upstart eine selbstentwickelte Alternative zum herkömmlichen SysVinit-System (s.u.) zu etablieren.
- Allerdings sind längst nicht alle (Server-)Dienste umgestellt worden.
- Da Upstart abwärtskompatibel zu SysVinit ist, wurde weiterhin ein Großteil der Serverdienste über SysVinit verwaltet.
- Ursprünglich übernahm die Aufgabe des Systemstarts auf Linux-Systemen Archiv/SysVinit.
- Dieses startet die Dienste nacheinander in einer festgelegten Reihenfolge.
- Das machte 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 - was zur Ablösung durch die oben genannten Systeme geführt hat.
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
systemctl
Wird als Init-System systemd verwendet, kann man den Befehl systemctl verwenden.
# systemctl [BEFEHL] [UNIT[.service]]
Hierbei entspricht UNIT dem bisher verwendeten DIENSTNAME bei Serverdiensten (die zusätzlich durch die Endung .service gekennzeichnet sind).
Aus Kompatibilitätsgründen funktioniert der folgende Befehl auch (noch) unter systemd, das oben erwähnt systemctl ist aber mächtiger.
# service DIENSTNAME [OPTION]
start, stop, restart, status usw.
- sind die möglichen Optionen bzw.
- Aktionen.
- Sind diese Aktionen unbekannt, lässt man sie einfach weg.
- Dann werden die vorhandenen Möglichkeiten auf der Kommandozeile angezeigt.
Auffinden und Ablegen von Diensten
Die Dateien der systemd Units findet man in den folgenden Verzeichnissen:
- systemd: /etc/systemd/system/ (benutzerdefinierte) oder /lib/systemd/system/ (systemeigene)
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 "less /PFAD/ZUR/DATEI").
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
Mehr Informationen zum Erstellen eigener Start-/Stopp-Skripte unter systemd (für alle Ubuntu-Systeme seit Ubuntu 15.04) findet man im Artikel systemd/Units (Abschnitt „Eigene-Units-anlegen“).
GUIs zum Bearbeiten von Diensten
Für systemd gibt es nur für Ubuntu 16.04 eine grafische Oberfläche, für alle anderen Ubuntu-Versionen erfolgt die Konfiguration über Dateien, die in einem Editor bearbeitet werden.