Bevor wir direkt mit Befehlen arbeiten, ist es wichtig zu verstehen, was systemd eigentlich macht und warum es so zentral für moderne Linux-Systeme ist.
Dieses Kapitel gibt dir das notwendige Hintergrundwissen, um systemd besser einordnen zu können – und bereitet dich darauf vor, ab dem nächsten Kapitel praktisch damit zu arbeiten.

🔹 Was ist systemd?

  • systemd ist das Init-System moderner Linux-Distributionen.
  • Es ist dafür zuständig, Prozesse und Dienste beim Start des Systems zu laden und im Betrieb zu überwachen.
  • Der Name steht für „system daemon“.

Früher gab es andere Init-Systeme:

  • SysVinit → klassisch, aber eingeschränkt.
  • Upstart → moderner, wurde aber von systemd abgelöst.

Heute gilt: Fast jede größere Distribution setzt standardmäßig auf systemd.

🔹 Hauptaufgaben von systemd

1. Systemstart (Bootprozess)

  • systemd ist der erste Prozess nach dem Kernel.
  • Es startet alle wichtigen Dienste in der richtigen Reihenfolge.

2. Dienstverwaltung (Service Management)

  • Dienste starten, stoppen, neu laden.
  • Dienste automatisch neu starten, falls sie abstürzen.

3. Protokollierung (Logging)

  • Mit journalctl kannst du alle Logs durchsuchen.
  • Einheitliche Verwaltung statt verstreuter Logdateien.

4. Ressourcenverwaltung

  • Begrenzung von CPU, RAM oder Netzwerk für bestimmte Dienste.

5. Timer und Automatisierung

  • systemd kann zeitgesteuerte Aufgaben übernehmen (ähnlich wie Cron, aber flexibler).

👉 Damit ist systemd viel mehr als nur ein Startsystem – es ist ein Komplettwerkzeug für die Verwaltung eines Linux-Systems.

🔹 Units – die Bausteine von systemd

systemd arbeitet mit sogenannten Units.
Eine Unit ist eine Konfigurationsdatei, die beschreibt, was systemd starten oder überwachen soll.

Die wichtigsten Typen:

  • Service-Units → starten Dienste (z. B. nginx.service)
  • Target-Units → bündeln andere Units, ähnlich wie Runlevels (graphical.target)
  • Timer-Units → starten Jobs nach Zeitplan (backup.timer)
  • Mount-Units → für Dateisysteme und Netzwerk-Mounts

Beispiel:

/lib/systemd/system/ssh.service → steuert den SSH-Server

/etc/systemd/system/backup.service → könnte ein eigener Backup-Dienst sein

👉 Alles, was systemd macht, basiert auf Units.

🔹 Prozesse und Abhängigkeiten

systemd verwaltet Prozesse in einer Baumstruktur.

  • Der erste Prozess ist systemd selbst (PID 1).
  • Alle anderen Prozesse hängen direkt oder indirekt daran.

Vorteil: systemd erkennt Abhängigkeiten.
Beispiel:

  • Ein Webserver (apache2.service) hängt vom Netzwerk (network.target) ab.
  • systemd startet automatisch zuerst das Netzwerk, dann den Webserver.

🔹 Status von systemd prüfen

Ob systemd läuft, kannst du ganz einfach überprüfen:

ps -p 1 -o comm=

Ausgabe:

systemd

👉 Damit siehst du: systemd ist tatsächlich Prozess Nr. 1 und damit das Init-System deines Linux-Systems.

🔹 Übung

  1.  Prüfe, ob systemd bei dir Prozess Nr. 1 ist:
    ps -p 1 -o comm=
  2. Sieh dir die laufenden Units an:
    systemctl list-units --type=service
  3. Finde heraus, ob dein SSH- oder Netzwerkdienst aktiv ist:
    systemctl status ssh

    oder

    systemctl status NetworkManager

✅ Zusammenfassung

  • systemd ist das Init-System moderner Linux-Distributionen.
  • Es startet und überwacht Dienste, schreibt Logs und verwaltet Ressourcen.
  • Die Arbeit von systemd basiert auf Units (Service, Target, Timer, Mount, …).
  • Mit systemctl kannst du Units überwachen und steuern – damit starten wir im nächsten Kapitel.

👉 Im nächsten Kapitel lernst du die wichtigsten Befehle kennen, um Dienste mit systemctl zu steuern.

📚 Inhaltsverzeichnis

👉 systemd Kapitel 1: Grundlagen – Was ist systemd und wie arbeitet es?
👉 systemd Kapitel 2: Dienste steuern mit systemctl
👉 systemd Kapitel 3: Logs und Fehlersuche mit journalctl
👉 systemd Kapitel 4: Bootprozess & Targets verstehen
👉 systemd Kapitel 5: Eigene Services erstellen
👉 systemd Kapitel 6: Timer als moderne Cron-Alternative
👉 systemd Kapitel 7: Abschlussprojekt – Eigene Services & Timer kombinieren