Systemd Stufe 1 Basic: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
(Neue Seite: systemd Stufe 1 (Basic))
 
(Links zu Stufe 3 und Lernpfad)
 
(2 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 3: Zeile 3:
 
! Stufe 1 · Basic !! Stufe 2 · Fortgeschritten !! Stufe 3 · Security
 
! Stufe 1 · Basic !! Stufe 2 · Fortgeschritten !! Stufe 3 · Security
 
|-
 
|-
−
| '''Ich verwende es''' || Ich schreibe Units || Ich härte und untersuche
+
| '''Ich verwende es''' || [[Systemd Stufe 2 Fortgeschritten|Ich schreibe Units]] || [[Systemd Stufe 3 Security|Ich härte und untersuche]]
 
|}
 
|}
  
Zeile 12: Zeile 12:
 
*Ein '''Target''' ist ein Sammelpunkt. Erst wenn alle Units davor laufen, ist er erreicht. Er ersetzt die alten Runlevel.
 
*Ein '''Target''' ist ein Sammelpunkt. Erst wenn alle Units davor laufen, ist er erreicht. Er ersetzt die alten Runlevel.
 
*Alle Meldungen landen an einer Stelle, im '''Journal'''. Gelesen wird es mit '''journalctl'''.
 
*Alle Meldungen landen an einer Stelle, im '''Journal'''. Gelesen wird es mit '''journalctl'''.
 +
{{#drawio:systemd-targets}}
  
 
=Animation=
 
=Animation=
Zeile 171: Zeile 172:
  
 
=Weiter=
 
=Weiter=
−
*Stufe 2: Units selbst schreiben
+
*[[Systemd Stufe 2 Fortgeschritten|Weiter: Stufe 2, Units selbst schreiben]]
 +
*[[Systemd Lernpfad|Übersicht: Lernpfad systemd]]

Aktuelle Version vom 17. Oktober 2026, 15:33 Uhr

Stufe 1 · Basic Stufe 2 · Fortgeschritten Stufe 3 · Security
Ich verwende es Ich schreibe Units Ich härte und untersuche

Einfach erklärt

  • systemd ist das erste Programm, das nach dem Kernel startet. Es hat die Prozessnummer 1.
  • Es startet alle Dienste, passt auf sie auf und startet sie bei Bedarf neu.
  • Alles, was systemd verwaltet, heißt Unit: ein Dienst, ein Mount, ein Timer.
  • Ein Target ist ein Sammelpunkt. Erst wenn alle Units davor laufen, ist er erreicht. Er ersetzt die alten Runlevel.
  • Alle Meldungen landen an einer Stelle, im Journal. Gelesen wird es mit journalctl.

Animation

Das Wichtigste

  • Bedient wird systemd mit systemctl, die Logs liest man mit journalctl.
  • start startet einen Dienst jetzt, enable beim nächsten Systemstart. Das sind zwei verschiedene Dinge.
  • enable --now macht beides auf einmal.
  • Der Name eines Dienstes endet auf .service. Die Endung darf man weglassen: ssh und ssh.service sind dasselbe.
  • Standard-Target auf Servern ist multi-user.target (früher Runlevel 3), mit Oberfläche graphical.target (Runlevel 5).

Dienste bedienen

Befehl Wirkung
systemctl status ssh Zustand, Hauptprozess und die letzten Logzeilen
systemctl start ssh jetzt starten
systemctl stop ssh jetzt stoppen
systemctl restart ssh stoppen und neu starten
systemctl reload ssh Konfiguration neu lesen, ohne Neustart (nur wenn der Dienst das kann)
systemctl enable ssh beim Systemstart starten
systemctl disable ssh beim Systemstart nicht mehr starten
systemctl enable --now ssh aktivieren und sofort starten
systemctl is-active ssh nur: läuft er? (active / inactive / failed)
systemctl is-enabled ssh nur: startet er beim Booten? (enabled / disabled)

Den Status lesen

  • systemctl status cron
● cron.service - Regular background program processing daemon
     Loaded: loaded (/usr/lib/systemd/system/cron.service; enabled; preset: enabled)
     Active: active (running) since Thu 2026-10-15 19:56:40 CEST; 1 day 20h ago
   Main PID: 1711 (cron)
      Tasks: 1 (limit: 76271)
     Memory: 568K (peak: 2.6M)
     CGroup: /system.slice/cron.service
             └─1711 /usr/sbin/cron -f
Zeile Bedeutung
● grün: läuft, weiß: gestoppt, rot: Fehler
Loaded wo die Unit-Datei liegt, und enabled = startet beim Booten
Active active (running) = läuft, inactive (dead) = gestoppt, failed = abgestürzt
Main PID die Prozessnummer des Dienstes
CGroup alle Prozesse, die zu diesem Dienst gehören
  • Die Ausgabe hält an wie less. Mit q beenden, oder gleich mit --no-pager aufrufen.

Übersicht verschaffen

Befehl Wirkung
systemctl list-units --type=service alle geladenen Dienste
systemctl list-units --type=service --state=running nur die laufenden
systemctl --failed alles, was gescheitert ist
systemctl list-unit-files --type=service alle installierten Dienste mit enabled / disabled
systemctl list-timers geplante Aufgaben, der Nachfolger von cron

Logs lesen mit journalctl

Befehl Wirkung
journalctl -u ssh alle Meldungen eines Dienstes
journalctl -u ssh -f live mitlesen, wie tail -f
journalctl -u ssh -e ans Ende springen
journalctl -b alles seit dem letzten Start
journalctl -b -1 alles vom vorletzten Start
journalctl -p err -b nur Fehler seit dem Start
journalctl -u ssh --since "1 hour ago" nur die letzte Stunde
journalctl -u ssh --since "2026-10-17 08:00" --until "2026-10-17 09:00" ein Zeitraum
journalctl -k nur Kernelmeldungen, wie dmesg
  • Normale Benutzer sehen nur ihre eigenen Meldungen. Für alles braucht man sudo oder die Gruppe adm.

Targets

Befehl Wirkung
systemctl get-default mit welchem Target das System startet
systemctl set-default multi-user.target ab dem nächsten Start ohne Oberfläche
systemctl isolate multi-user.target sofort wechseln, die Oberfläche wird beendet
systemctl isolate rescue.target Rettungsmodus: nur Grundsystem und root-Shell
systemctl default zurück zum Standard-Target
Runlevel Target Bedeutung
0 poweroff.target ausschalten
1 rescue.target Rettungsmodus, alle Dateisysteme eingehängt, keine Dienste
3 multi-user.target Mehrbenutzer mit Netzwerk, ohne Oberfläche
5 graphical.target wie 3, dazu die grafische Oberfläche
6 reboot.target neu starten
– emergency.target Notfall: nur / nur lesbar, sonst nichts

Ausschalten und Neustarten

  • systemctl poweroff
  • systemctl reboot
  • systemctl suspend

Stolperfallen

  • start ist nicht enable. Ein gestarteter Dienst ist nach dem Neustart wieder weg, wenn er nicht aktiviert ist.
  • enable ist nicht start. Ein aktivierter Dienst läuft erst nach dem nächsten Neustart, außer mit enable --now.
  • reload geht nur, wenn der Dienst es unterstützt. Sonst kommt: Job type reload is not applicable. Dann restart nehmen.
  • Keine Logs zu sehen? Ohne sudo zeigt journalctl nur die eigenen Meldungen.
  • Der Dienst startet nicht? Immer zuerst: systemctl status dienst und journalctl -u dienst -e

Aufgaben

Grundaufgaben

  1. Lassen Sie sich alle laufenden Dienste anzeigen. Wie viele sind es?
  2. Zeigen Sie den Status von ssh an. Seit wann läuft der Dienst, und welche PID hat er?
  3. Stoppen Sie ssh, prüfen Sie mit is-active und starten Sie ihn wieder.
  4. Lesen Sie live die Logs von ssh mit und melden Sie sich von einem zweiten Rechner per ssh an. Was erscheint?
  5. Prüfen Sie, ob cron beim Systemstart gestartet wird.
  6. Mit welchem Target startet Ihr System?
  7. Lassen Sie sich alle Fehlermeldungen seit dem letzten Start anzeigen.

Für Schnelle

  1. Deaktivieren Sie ssh, starten Sie neu und prüfen Sie, ob ssh läuft. Aktivieren Sie ihn danach mit einem einzigen Befehl wieder und starten Sie ihn gleichzeitig.
  2. Wechseln Sie mit isolate in den Rettungsmodus und wieder zurück. Was läuft dort noch?
  3. Lassen Sie sich die Logs vom vorletzten Systemstart anzeigen.

Weiter