Managing systemd Systems

πŸ“š Hoofdstuk 6.2: Beheer van Systemd-systemen

──────────────────────────────
βš™οΈ Wat is Systemd?
──────────────────────────────
Systemd is de moderne vervanger van init.
Beheert services, sockets, mounts, timers en meer.
Services kunnen automatisch starten bij:
β€’ Opstart
β€’ Netwerkverbinding
β€’ Tijdtrigger (timer)
β€’ Hardwaredetectie

πŸ“Œ Hoofdlocatie voor configuratie:
β€’ /etc/systemd/system

──────────────────────────────
🧩 Soorten Systemd Units
──────────────────────────────
Systemd gebruikt unit files om verschillende onderdelen van het systeem te definiΓ«ren.

Type | Beschrijving
──────────────|─────────────────────────────────────────────
.service | Systeemservice (bv. sshd.service)
.target | Groepeert meerdere services
.socket | Socketactivatie
.timer | Tijdgebaseerde activatie
.mount | Bestandssysteem-mounts
.automount | Automatisch mount bij toegang
.device | Hardwareapparaten
.path | Activeert bij padwijziging
.scope | Niet-systemd-processen
.swap | Beheert swapruimte
.slice | Resourcebeheer (cgroups)
.snapshot | Tijdelijke systeemstatus

πŸ“Œ Actieve units tonen:
systemctl list-units

πŸ“Œ Locaties:
β€’ /etc/systemd/system/ (eigen services)
β€’ /usr/lib/systemd/system/ (standaard distro services)

──────────────────────────────
🎯 Systemd Targets (Runlevel-vervanger)
──────────────────────────────
Target | Beschrijving
────────────────────|─────────────────────────────────────
graphical.target | GUI + netwerk
multi-user.target | CLI + netwerk (meerdere gebruikers)
network-online.target | Start services pas na netwerk
runlevel3.target | Compatibiliteit met oud SysV-init

πŸ“Œ Standaardtarget tonen:
systemctl get-default

πŸ“Œ Wijzigen naar CLI-only target:
systemctl set-default multi-user.target

──────────────────────────────
🧾 Opbouw van een Unitbestand
──────────────────────────────
Unitbestanden bestaan uit 3 secties:

[UNIT] – Algemene info
β€’ After= β†’ Start na andere unit
β€’ Before= β†’ Start vΓ³Γ³r andere unit
β€’ Description= β†’ Beschrijving
β€’ Requires= β†’ Moet samen starten met
β€’ Wants= β†’ Mag samen starten met
β€’ Conflicts= β†’ Start niet als deze draait

[SERVICE] – Servicegedrag
β€’ ExecStart= β†’ Startcommando
β€’ ExecStop= β†’ Stopcommando
β€’ ExecReload= β†’ Reloadcommando
β€’ Restart= β†’ Herstart bij crash
β€’ Type= β†’ simple, forking, oneshot

[INSTALL] – Gedrag bij inschakelen
β€’ Alias= β†’ Alternatieve naam
β€’ RequiredBy= β†’ Andere units vereisen deze
β€’ WantedBy= β†’ Andere units mogen deze gebruiken

──────────────────────────────
πŸ›  Services Beheren met systemctl
──────────────────────────────
Service aanzetten bij opstart:
systemctl enable sshd.service

Service uitschakelen:
systemctl disable sshd.service

Service direct starten / stoppen:
systemctl start sshd
systemctl stop sshd
systemctl restart sshd

Configuratie herladen zonder stoppen:
systemctl reload sshd

──────────────────────────────
🩺 Status en Debugging
──────────────────────────────
πŸ“Œ Service status:
systemctl status sshd

πŸ“Œ Actief? Ingeschakeld? Gefaald?
systemctl is-active sshd
systemctl is-enabled sshd
systemctl is-failed sshd

πŸ“Œ Opstartanalyse:
systemd-analyze time β†’ Totaal opstarttijd
systemd-analyze blame β†’ Langzaamste units
systemd-analyze critical-chain β†’ Kritische afhankelijkheden
systemctl verify β†’ Controleer unitbestanden