systemd analyse
Erklärung und Beispiele zu systemd-analyze Befehlen
Dieser Beitrag erläutert die wichtigsten systemd-Diagnosewerkzeuge und ihre Anwendung. Mit ihnen identifizierst du Boot-Engpässe, analysierst Abhängigkeiten und optimierst die Startzeit.
systemd-analyze blame
Der Befehl systemd-analyze blame listet alle gestarteten Dienste und zeigt, wie lange jede Unit zum Initialisieren benötigt hat. So erkennst du lang laufende Dienste.
Funktionsweise
-
Erfasst Startzeiten aller systemd-Units.
-
Sortiert die Liste absteigend nach Dauer.
-
Hebt die größten Zeitfresser hervor.
Beispiel
$ systemd-analyze blame
2.345s systemd-udevd.service
1.123s NetworkManager.service
850ms systemd-logind.service
450ms dbus.service
100ms systemd-journald.servicesystemd-udevd.service benötigt hier 2.345s und ist der größte Bremsklotz.
systemd-analyze critical-chain
systemd-analyze critical-chain zeigt den kritischen Pfad der Boot-Abhängigkeiten. Nur jene Dienste, die seriell starten und die Gesamtdauer wirklich bestimmen.
Funktionsweise
-
Ermittelt den Pfad, der den Boot am meisten verzögert.
-
Gibt Startzeitpunkt und Verzögerung jeder Unit wieder.
-
Hilft, echte Bottlenecks zu finden.
Beispiel
$ systemd-analyze critical-chain
graphical.target @2.456s
└─multi-user.target @2.456s
└─ssh.service @2.123s +233ms
└─network-online.target @2.100s
└─network.target @2.050s
└─systemd-udevd.service @1.800s +250msGraphical.target wird hier nach 2.456s erreicht; ssh.service verzögert mit +233ms.
systemd-analyze time
Mit time erhältst du die Gesamtaufteilung der Boot-Dauer:
systemd-analyze timeBeispiel
Startup finished in 120ms (kernel) + 1.5s (initrd) + 15.8s (userspace) = 17.4s
graphical.target reached after 16.3s in userspace
zeigt Kernel-, Initrd- und Userspace-Zeiten.
systemd-analyze plot
Erstellt eine interaktive SVG-Grafik aller Units nach Startzeit und Dauer:
systemd-analyze plot > boot.svgDanach boot.svg im Browser öffnen und visuell analysieren.
systemd-analyze dot
Gibt den Unit-Dependency-Graph im Graphviz-DOT-Format aus:
systemd-analyze dot | dot -Tpng > deps.pngSo lassen sich Abhängigkeiten graphisch darstellen.
systemd-analyze dump
Listet interne systemd-Datenstrukturen (Caches, Objekte, Jobs) in roher Form:
systemd-analyze dumpNützlich für tiefes Debugging und Entwickleranalyse.
systemd-analyze calendar
Zeigt, wann Timer-Units das nächste Mal ausgelöst werden:
systemd-analyze calendar <Timer-Unit>Zeige den nächsten Auslösezeitpunkt von apt-daily.timer
envelope@host:~$ systemd-analyze calendar apt-daily.timer
NEXT LEFT LAST PASSED UNIT
mi 30 jul 2025 06:25:00 CEST 2h 10min left fr 29 jul 2025 04:15:24 CEST 10h 59min ago apt-daily.timerHilft, geplante Tasks im Blick zu behalten.
Falls du eine Übersicht über alle aktiven Timer erhalten möchtest, ist systemctl list-timers einfacher:
systemctl list-timers --allsystemd-analyze security
Bewertet Units nach Sicherheitsoptionen (Sandboxing, Namespaces, Capabilities):
systemd-analyze security myservice.serviceErmöglicht ein schnelles Security-Audit.
systemd-analyze verify
Prüft Unit-Dateien auf Syntax- und Semantik-Fehler:
systemd-analyze verify /etc/systemd/system/*.serviceUnterstützt die Konfigurationsvalidierung.
## systemd-analyze blame
Der Befehl „systemd-analyze blame“ listet alle gestarteten Dienste des Systems auf und zeigt die benötigte Zeit an, die jeder Dienst zum Initialisieren benötigt hat. Dies ermöglicht es, die Dienste mit dem höchsten Startzeitaufwand zu identifizieren.
### Funktionsweise
- Erfasst die Startzeiten aller systemd-Dienste.
- Sortiert die Liste absteigend nach der Dauer.
- Erlaubt die Identifizierung von Diensten, deren Startzeit den Bootprozess signifikant verlangsamt.
### Beispiel
$ systemd-analyze blame
2.345s systemd-udevd.service
1.123s NetworkManager.service
850ms systemd-logind.service
450ms dbus.service
100ms systemd-journald.serviceIm obigen Beispiel ist “systemd-udevd.service” der Dienst, der mit 2.345 Sekunden am längsten zum Start benötigt hat.
## systemd-analyze critical-chain
Der Befehl „systemd-analyze critical-chain“ beschreibt den kritischen Pfad (critical chain) der Abhängigkeiten beim Bootvorgang. Er zeigt, wie lange jeder Dienst zwangsläufig warten musste, bis notwendige Abhängigkeiten bereit waren. Somit können Engpässe im Bootprozess detaillierter nachvollzogen werden.
### Funktionsweise
- Berechnet den Pfad der Dienste, die den Bootvorgang am meisten verzögern.
- Zeigt den Summenwert des kritischen Pfads, also die minimale Bootzeit, wenn asynchrone Prozesse optimiert werden.
- Visualisiert Abhängigkeitsketten im Bootmanagement.
### Beispiel
$ systemd-analyze critical-chain
graphical.target @2.456s
└─multi-user.target @2.456s
└─ssh.service @2.123s +233ms
└─network-online.target @2.100s
└─network.target @2.050s
└─systemd-udevd.service @1.800s +250msIm Beispiel zeigt die Ausgabe, dass „graphical.target“ nach 2.456 Sekunden erreicht wird. Die Auflistung der abhängigen Dienste veranschaulicht, welche Einheiten den Startzeitpunkt des Systems maßgeblich beeinflussen.
## Tags
systemdLinuxBootoptimierungDiagnosticsperformancesystemd-analyze
Linux-Blog-Overview
systemd-analyze unit-paths
Listet die Verzeichnisse, in denen systemd nach Unit-Dateien sucht:
systemd-analyze unit-pathsTags
systemdLinuxBootoptimierungDiagnosticsperformancesystemd-analyze