Hosten Sie Ihren eigenen KI-Agenten mit OpenClaw - kostenlose 1-Klick-Installation!

Linux-Dienste mit systemctl auflisten und verwalten

Linux-Dienste mit systemctl auflisten und verwalten

Ein Server mit 40 laufenden Diensten ohne Plan, welche davon wirklich gebraucht werden, ist ein Security-Risiko, das nur auf den Knall wartet. systemctl gibt dir die volle Übersicht und Kontrolle über jeden Daemon auf deinem System.

Wie Linux-Dienste funktionieren

Linux-Dienste sind Hintergrundprozesse, die unabhängig von User-Sessions laufen. Sie kümmern sich um alles – vom Web-Hosting über die Cron-Planung bis hin zum SSH-Zugriff. Auf modernen Linux-Systemen werden sie von systemd verwaltet.

Was ist ein Daemon?

Ein Daemon ist ein Prozess, der im Hintergrund läuft, meistens direkt beim Booten startet und dann durchgehend aktiv ist. Der Name kommt aus der Unix-Tradition. Apache ist ein Daemon. sshd ist ein Daemon. MySQL ist ein Daemon. Sie haben kein kontrollierendes Terminal und brauchen keine User-Interaktion, um zu laufen.

systemd vs. ältere Init-Systeme

systemd hat SysVinit so um 2014-2015 als Standard-Init-System in den meisten großen Distros abgelöst. Die Hauptunterschiede: systemd startet Dienste parallel (schnellerer Boot), nutzt deklarative Unit-Dateien statt Shell-Skripte, trackt Abhängigkeiten explizit und integriert das Logging per Journal. Wenn du Ubuntu 16.04+, CentOS 7+ oder Debian 8+ nutzt, bist du mit systemd unterwegs.

Wie man Linux-Dienste auflistet

Alle Unit-Dateien mit systemctl auflisten

Der Hauptbefehl, um Dienste und ihren Status aufzulisten:

sudo systemctl list-unit-files --type=service

Das spuckt jede Service-Unit-Datei auf dem Rechner aus – inklusive Status (enabled, disabled, masked, static oder failed) und der Standardeinstellung des Herstellers.

Nur laufende Dienste auflisten

Um nur aktive Dienste zu sehen:

sudo systemctl list-units --type=service --state=running

Das ist praktisch, wenn du checken willst, was wirklich läuft und was einfach nur installiert ist.

Dienste nach Status filtern

systemctl list services unterstützt das Filtern nach Status:

sudo systemctl list-units --type=service --state=failed

„Failed“-Dienste sind die, die du dir sofort genauer anschauen solltest. Ein Dienst, der beim Booten abschmiert, ohne dass es jemand merkt, ist oft der Grund für seltsames Systemverhalten.

Dienste auf älteren Systemen auflisten

Auf Systemen, die noch SysVinit nutzen oder den „service“-Befehl haben:

service --status-all

Die Ausgabe zeigt ein „+“ für laufend, „-“ für gestoppt und „?“ für einen unbekannten Status.

Wie man Linux-Dienste verwaltet

Einen Dienst starten und stoppen

Einen gestoppten Dienst starten:

sudo systemctl start nginx

Einen laufenden Dienst stoppen:

sudo systemctl stop nginx

Diese Änderungen greifen sofort, sind aber nicht dauerhaft. Wenn der Rechner neu startet, kehrt der Dienst zu seinem vorherigen Status (enabled/disabled) zurück.

Einen Dienst neu starten und neu laden

Vollständiger Neustart (stoppt und startet den Prozess):

sudo systemctl restart nginx

Konfiguration neu laden, ohne den Prozess zu killen (wird von manchen Diensten unterstützt):

sudo systemctl reload nginx

„reload“ ist besser für Dienste wie nginx, weil bei einem Neustart kurz die Verbindungen abbrechen. Nicht alle Dienste unterstützen das.

Beim Booten aktivieren und deaktivieren

Einen Dienst so einstellen, dass er beim Booten automatisch startet:

sudo systemctl enable nginx

Ihn deaktivieren:

sudo systemctl disable nginx

Aktivieren und direkt in einem Befehl starten:

sudo systemctl enable --now nginx

Status eines Dienstes checken

Den aktuellen Zustand und die neuesten Logs eines Dienstes anzeigen:

sudo systemctl status nginx

Die Ausgabe zeigt, ob er „active“ oder „failed“ ist, seine PID, den Speicherverbrauch und die letzten 10 Journal-Zeilen. Das ist der erste Befehl, den du ausführst, wenn ein Dienst sich seltsam verhält.

systemctl-Ausgabe und Logs lesen

Dienstzustände interpretieren

Die fünf Zustände, die dir in der „list-unit-files“-Ausgabe begegnen:

  • enabled: Der Dienst startet beim Booten über einen Symlink in /etc/systemd/system/ oder einem ähnlichen Pfad.
  • disabled: Der Dienst startet nicht beim Booten, kann aber manuell gestartet werden.
  • masked: Der Dienst ist „hart“ deaktiviert. Er kann nicht mal manuell gestartet werden, bis du ihn wieder mit „unmask“ freigibst.
  • static: Der Dienst hat keinen „install“-Abschnitt in seiner Unit-Datei. Er läuft nur, wenn eine andere Unit ihn anfordert.
  • failed: systemd hat versucht, den Dienst zu starten, aber er wurde mit einem Fehler beendet.

Logs mit journalctl anzeigen

systemd speichert alle Dienst-Ausgaben im Journal. Logs für einen bestimmten Dienst anzeigen:

sudo journalctl -u nginx

Die Live-Ausgabe verfolgen:

sudo journalctl -u nginx -f

Nur die letzten 100 Zeilen anzeigen:

sudo journalctl -u nginx -n 100

Best Practices für Linux Dienste Management

  • Check die laufenden Dienste regelmäßig. Alles, was du nicht selbst installiert hast und nicht kennst, solltest du untersuchen.
  • Maskiere Dienste, die niemals laufen sollen, statt sie nur zu deaktivieren. Deaktivieren lässt die Tür offen, dass andere Pakete sie einfach wieder einschalten.
  • Nutz „enable –now“ und „disable –now“, um Zustände zu vermeiden, in denen ein Dienst zwar aktiviert ist, aber gar nicht läuft.
  • Check nach jedem Reboot die fehlgeschlagenen Dienste: sudo systemctl –failed
  • Starte Dienste in der Produktion nicht einfach neu, ohne vorher die „reload“-Option zu prüfen. Ein Reload stört den Betrieb deutlich weniger.

FAQ: Linux-Dienste auflisten

Wie liste ich alle laufenden Dienste in Linux auf?

Führ das hier aus: sudo systemctl list-units –type=service –state=running. Das zeigt dir nur die aktuell aktiven Dienste. Für alle installierten Dienste (egal welcher Status) nutz du: sudo systemctl list-unit-files –type=service

Wie starte ich einen Dienst unter Linux?

Führ aus: sudo systemctl start service-name. Ersetz „service-name“ durch den echten Namen (z.B. nginx, mysql, sshd). Um ihn auch beim Booten zu aktivieren: sudo systemctl enable –now service-name

Wie aktiviere ich einen Dienst beim Booten?

Führ aus: sudo systemctl enable service-name. Das erstellt die nötigen Symlinks, damit der Dienst beim Booten automatisch startet. Um ihn auch sofort zu starten, häng einfach „–now“ an: sudo systemctl enable –now service-name

Was ist der Unterschied zwischen „stop“ und „disable“?

stop halts the service right now but doesn’t change its boot behavior. disable removes the boot symlinks so it won’t start next reboot, but doesn’t affect the currently running instance. To both stop it now and prevent it from starting again, run: sudo systemctl disable --now service-name

Nach oben scrollen