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.service

systemd-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 +250ms

Graphical.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 time

Beispiel

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.svg

Danach 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.png

So lassen sich Abhängigkeiten graphisch darstellen.


systemd-analyze dump

Listet interne systemd-Datenstrukturen (Caches, Objekte, Jobs) in roher Form:

systemd-analyze dump

Nü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.timer

Hilft, 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 --all

systemd-analyze security

Bewertet Units nach Sicherheitsoptionen (Sandboxing, Namespaces, Capabilities):

systemd-analyze security myservice.service

Ermöglicht ein schnelles Security-Audit.


systemd-analyze verify

Prüft Unit-Dateien auf Syntax- und Semantik-Fehler:

systemd-analyze verify /etc/systemd/system/*.service

Unterstü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.service

Im 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 +250ms

Im 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-paths

Tags

systemdLinuxBootoptimierungDiagnosticsperformancesystemd-analyze

Linux-Blog-Overview