Runlevel, systemd-Ziele und sicheres Herunterfahren (LPIC-1 101.3) – Dienste steuern ohne Neustart

Inhaltsverzeichnis

Linux folgt der Unix-Idee: Viele spezialisierte Prozesse (Daemons/Dienste) bilden gemeinsam das System. Welche davon aktiv sind, hängt vom Einsatzzweck ab. Damit Administratoren Dienste gezielt starten/stoppen, Zustände wechseln und Systeme kontrolliert herunterfahren können, bieten Distributionen Service-Manager an: klassisch SysVinit (Runlevel), heute überwiegend systemd (Units/Targets). Dieser Beitrag fasst die LPI-Lektion 101.3 vollständig, praxisnah und prüfungsorientiert zusammen.

Warum wichtig für Sysadmin

In Betrieb, Wartung und Incident-Response willst du Dienste ohne Reboot neu laden, gezielt in einen Single-User-Modus wechseln, sauber herunterfahren und Benutzer rechtzeitig warnen. Wer Runlevel/Targets, systemctl-Kommandos und den Shutdown-Pfad beherrscht, spart Ausfallzeit – ob On-Prem, in VMs oder in der Cloud.

SysVinit: Runlevel und /etc/inittab

SysVinit verwaltet Runlevel (0–6) als vordefinierte Systemzustände. Typische Zuordnung:

  • 0: halt (Herunterfahren)
  • 1, s, single: Einzelbenutzer-/Wartungsmodus, ohne Netzwerk
  • 2/3/4: Mehrbenutzer (Konsole/Netzwerk), 2 und 4 je nach Distro selten genutzt
  • 5: wie 3, plus grafische Anmeldung
  • 6: reboot

Der Service-Manager ist /sbin/init (PID 1). Er liest /etc/inittab (Format id:runlevels:action:process) und lädt pro Runlevel die passenden Skripte aus /etc/init.d/ über verlinkte Verzeichnisse /etc/rcX.d/.

# Aktuellen Runlevel anzeigen (vorheriger + aktueller)

$ runlevel
N 3

# In den Single-User-Mode wechseln (Runlevel 1)

$ sudo telinit 1

# Nach Änderung der /etc/inittab neu laden

$ sudo telinit q

systemd: Units, Targets und systemctl

Moderne Distributionen nutzen systemd. Es verwaltet Units (Objekte) unterschiedlicher Typen, u. a. service, socket, device, mount, automount, target, snapshot. Zentrale Befehle mit systemctl:

# Dienste steuern

sudo systemctl start|stop|restart sshd.service
systemctl status sshd.service
systemctl is-active sshd.service
sudo systemctl enable|disable sshd.service
systemctl is-enabled sshd.service

# Ziele (Targets) wie Runlevel-Gruppen

systemctl list-unit-files --type=target
sudo systemctl isolate multi-user.target

# Standardziel setzen/anzeigen

sudo systemctl set-default multi-user.target
systemctl get-default

Unit-Dateien liegen distributionabhängig meist unter /lib/systemd/system/. Aktive/geladene Units der laufenden Sitzung listet systemctl list-units.

Energiesteuerung mit systemd

# Neustart / Ausschalten (Root-Rechte erforderlich)

sudo systemctl reboot
sudo systemctl poweroff

Weitere Power-Ereignisse (Suspend/Hibernate) werden über systemd/logind gesteuert; Konfiguration in /etc/systemd/logind.conf bzw. logind.conf.d/.

Upstart (historisch)

Ehemals in Ubuntu verbreitet, heute weitgehend durch systemd ersetzt.

# Dienste auflisten / Status / Start / Stop

initctl list
status tty6
sudo start tty6
sudo stop tty6

Herunterfahren und Neustart: shutdown, wall und Koordination

Der klassische Befehl shutdown benachrichtigt angemeldete Nutzer, blockiert neue Logins, sendet SIGTERM und anschließend SIGKILL und initiiert den angeforderten Zustand. Syntax:

# Grundform

shutdown [OPTIONEN] ZEIT [NACHRICHT]

# Beispiele

sudo shutdown -r +5  "Reboot in 5 Minuten"
sudo shutdown -h now "Sofort herunterfahren"
sudo shutdown -c     # geplanten Shutdown/Restart abbrechen

# Nachricht an alle TTYs senden

echo "Wartung in 15 Minuten" | sudo wall

Geführte Übungen (mit Lösung)

  1. Wie System mit telinit neu starten?telinit 6
  2. Was passiert mit /etc/rc1.d/K90network beim Wechsel zu Runlevel 1? – K-Prefix = beenden
  3. Prüfen, ob sshd.service läuft (systemd)?systemctl status sshd.service oder systemctl is-active sshd.service
  4. Autostart von sshd.service aktivieren (systemd)?sudo systemctl enable sshd.service

Offene Übungen (mit Lösung)

  1. SysV: initdefault=3 gesetzt, System startet trotzdem in Runlevel 1. Warum? – Kernelparameter 1 oder S überschreibt Standard
  2. Worauf zeigt /sbin/init in systemd-Systemen? – Link auf /lib/systemd/systemd
  3. Standardsystemziel unter systemd verifizieren?systemctl get-default oder Link /etc/systemd/system/default.target prüfen
  4. Geplanten Neustart via shutdown abbrechen?shutdown -c

Zusammenfassung

  • SysVinit: Runlevel 0–6, /etc/inittab, /etc/init.d, /etc/rcX.d, runlevel, telinit.
  • systemd: Units/Targets, systemctl (start/stop/restart/status, enable/disable, isolate, get-default, set-default).
  • Upstart: initctl, start, stop, status (historisch).
  • Shutdown-Pfad: shutdown (Zeit & Nachricht), -r/-h, -c; Nutzer mit wall informieren.

Wissensprüfung: 10 Multiple-Choice-Fragen

  1. Welcher Runlevel steht bei SysV für einen Neustart?
    • A) 0
    • B) 1
    • C) 3
    • D) 6
  2. Was bewirkt ein Link K… in /etc/rc1.d/?
    • A) Start
    • B) Stop
    • C) Reload
    • D) Aktivieren
  3. Welcher Befehl wechselt unter systemd live in den Mehrbenutzer-Modus ohne GUI?
    • A) telinit 3
    • B) init 3
    • C) systemctl isolate multi-user.target
    • D) systemctl default
  4. Womit prüfst du, ob sshd.service beim Booten startet?
    • A) systemctl is-enabled sshd.service
    • B) systemctl is-active sshd.service
    • C) systemctl status
    • D) journalctl -u sshd
  5. Wo liegen üblicherweise Unit-Dateien?
    • A) /etc/init.d/
    • B) /lib/systemd/system/
    • C) /etc/inittab
    • D) /etc/rc.local
  6. Wie Abbruch eines geplanten Shutdowns?
    • A) shutdown --abort
    • B) shutdown -c
    • C) systemctl cancel
    • D) halt -c
  7. Wie sofortige Abschaltung mit Benachrichtigung?
    • A) poweroff
    • B) halt
    • C) shutdown -h now "Wartung"
    • D) reboot -h now
  8. Welcher Befehl zeigt das Standard-Target unter systemd?
    • A) systemctl default
    • B) systemctl get-default
    • C) systemctl show-default
    • D) systemctl current
  9. Was bewirkt systemctl enable?
    • A) Startet sofort
    • B) Markiert für Autostart
    • C) Lädt Unit neu
    • D) Prüft Laufzeitstatus
  10. Welcher Mechanismus entspricht unter systemd am ehesten einem Runlevel?
    • A) service-Units
    • B) socket-Units
    • C) target-Units
    • D) mount-Units

Antworten mit Begründung

  1. D – Runlevel 6 ist Reboot.
  2. B – K-Links beenden Services beim Betreten des Runlevels.
  3. Cisolate multi-user.target (wie Runlevel 3).
  4. Ais-enabled prüft Boot-Autostart.
  5. B – Typischer Pfad (distroabhängig).
  6. Bshutdown -c bricht ab.
  7. C-h now mit Nachricht.
  8. B – Zeigt das Standard-Target.
  9. B – Aktiviert Autostart (Wants-Symlink).
  10. C – Targets bündeln Units zu Systemzuständen.
Andreas Moor
Andreas Moor
@blog@andreas-moor.de

Hallo Fediverse, ich bin Andy!

Hier und auf meiner Website findest du mein akkumuliertes Linux-Sysadmin-Wissen, meine kleinen und größeren Projekte und die Tools, die ich nutze.

Viel Spaß beim stöbern, lesen und lernen! 🧑‍💻

236 Beiträge
16 Folgende