EMZETT.
Login

Dienst

Kurz: Ein Programm (auch “Service” genannt), das im Hintergrund läuft, ohne dass ein Nutzer aktiv damit interagiert.

Genauer: Startet meist automatisch mit dem Betriebssystem und läuft dauerhaft weiter, um bestimmte Funktionen bereitzustellen — z. B. ein Druckdienst, ein Netzwerkdienst oder ein Datenbankserver. Verwaltet wird das unter Windows über den Task Manager/die Dienste-Verwaltung, unter Linux z. B. über systemd.

Im Detail

Ein Dienst unterscheidet sich von einem normalen Programm vor allem darin, dass er nicht an eine angemeldete Benutzersitzung gebunden ist — er läuft weiter, auch wenn sich niemand am Rechner anmeldet, oft schon direkt beim Systemstart, bevor überhaupt ein Login-Bildschirm erscheint. Unter Windows heißen Dienste “Windows Services” (verwaltbar über services.msc), unter Linux übernimmt meist systemd das Starten, Stoppen und Überwachen (systemctl status nginx, systemctl restart nginx).

systemctl status ssh
systemctl restart nginx

Typische Beispiele sind Webserver (nginx, Apache), Datenbankserver (MySQL, PostgreSQL), Druckdienste (CUPS unter Linux, der Druckerspooler unter Windows) oder Hintergrund-Wartungsaufgaben wie automatische Updates. Stürzt ein Dienst ab, merkt der Nutzer davon oft zunächst nichts — erst wenn die davon abhängige Funktion (Drucken, eine Website, eine Datenbankverbindung) fehlschlägt, wird das Problem sichtbar, weshalb Server-Umgebungen Dienste meist mit automatischem Neustart und Monitoring konfigurieren.

systemd als moderner Standard unter Linux

Über Jahrzehnte nutzten Linux-Distributionen unterschiedliche, teils simple Init-Systeme (SysVinit mit sequenziell abgearbeiteten Shell-Skripten), bis sich systemd ab den 2010ern als De-facto-Standard durchsetzte. systemd startet Dienste parallel statt strikt sequenziell (schnellerer Bootvorgang), überwacht sie kontinuierlich und kann abgestürzte Dienste automatisch neu starten. Jeder Dienst wird über eine sogenannte Unit-Datei definiert (/etc/systemd/system/mein-dienst.service), die u. a. festlegt, welcher Befehl beim Start ausgeführt wird und von welchen anderen Diensten der eigene abhängt:

[Unit]
Description=Mein Beispiel-Dienst
After=network.target
 
[Service]
ExecStart=/usr/bin/mein-programm
Restart=on-failure
 
[Install]
WantedBy=multi-user.target

Windows-Dienste und Sicherheitskontext

Unter Windows läuft jeder Dienst unter einem eigenen Benutzerkonto (oft speziellen Systemkonten wie LocalSystem, NetworkService oder LocalService), das genau die Berechtigungen erhält, die der Dienst tatsächlich braucht — ein Dienst, der nur lokale Dateien verarbeitet, sollte idealerweise keinen Netzwerkzugriff besitzen (Prinzip der minimalen Berechtigung). Über die Dienste-Verwaltung (services.msc) lässt sich für jeden Dienst konfigurieren, ob er automatisch, manuell oder gar nicht startet, und wie er auf Fehler reagiert (z. B. automatischer Neustart nach einem Absturz).

Dienst vs. Daemon vs. Hintergrundprozess

Die Begriffe überschneiden sich stark, unterscheiden sich aber leicht im Ursprung: “Daemon” ist der traditionelle Unix-Begriff für dasselbe Konzept (oft an der Namensendung d erkennbar, z. B. sshd, httpd), “Dienst”/“Service” ist der Windows-typische Begriff, und “Hintergrundprozess” ist die allgemeinste, plattformunabhängige Bezeichnung, die auch einfache, nicht formal als Dienst registrierte Programme umfassen kann, die einfach ohne sichtbares Fenster laufen.

Siehe auch: Task Manager, Windows, Linux