Overzicht
systemd speelt een cruciale rol bij het efficiënt beheren van het opstartproces van het systeem, het toezicht houden op actieve services en het controleren van verschillende systeemstatussen. In tegenstelling tot init, dat scripts sequentieel uitvoert, verwerkt systemd services parallel op basis van afhankelijkheden, wat de opstartsnelheid aanzienlijk verbetert. Dit is een belangrijke factor die bijdraagt aan de prestaties en stabiliteit van moderne Linux-systemen.
Belangrijkste kenmerken
De belangrijkste kenmerken van systemd zijn:
- Parallel opstarten: Analyseert serviceafhankelijkheden en start meerdere services tegelijk, waardoor de opstarttijd wordt verkort.
- Geïntegreerd beheer: Beheert diverse elementen zoals systeemopstart, services, apparaten en logboeken binnen één enkel framework.
- Servicemonitoring: Helpt bij een stabiele werking, bijvoorbeeld door services automatisch opnieuw te starten als ze falen.
- Vervanging van runlevels: Introduceert het concept van 'targets' in plaats van runlevels om de systeemstatus te beheren.
Relatie met init
systemd is de opvolger en vervanger van het traditionele init-systeem. Het erft de rol van het starten en afsluiten van het systeem die init uitvoerde, en voegt verbeterde functionaliteiten toe.
- init: Het allereerste proces dat wordt uitgevoerd, dat bij het opstarten het `/etc/inittab`-bestand raadpleegde en scripts sequentieel uitvoerde op basis van runlevels.
- systemd: Ook een PID 1-proces, maar gebruikt 'targets' in plaats van runlevels en verwerkt services parallel op basis van afhankelijkheden, waardoor het sneller en flexibeler is.
- Compatibiliteit: In de meeste moderne Linux-systemen is init gekoppeld aan systemd via een symbolische link, waardoor systemd de init-commando's afhandelt.
Kernconcepten
Essentiële kernconcepten voor het begrijpen van systemd.
Unit
Alle objecten die door systemd worden beheerd (services, mountpoints, apparaten, enz.) worden gedefinieerd als 'units'. Elke unit heeft een configuratiebestand (`*.service`, `*.mount`, enz.) dat een specifieke taak definieert.
- Service Unit: Beheert achtergrondprocessen zoals webservers (nginx.service) of databases (mysql.service).
- Target Unit: Groepeert meerdere units. Het is een concept dat runlevels vervangt; 'multi-user.target' staat voor de multi-user modus, en 'graphical.target' voor de grafische modus.
- Mount Unit: Beheert bestandssysteem mountpoints.
systemctl
Het belangrijkste commandoregelhulpprogramma voor het beheren van systemd. Het wordt gebruikt om services te starten, stoppen, herstarten of om de status van units te controleren.
- Service starten: sudo systemctl start nginx
- Servicestatus controleren: sudo systemctl status nginx
- Systeem opnieuw opstarten: sudo systemctl reboot
journalctl
Een commando om systeemlogboeken te bekijken die geïntegreerd door systemd worden beheerd. U kunt logboeken filteren op service, tijd of prioriteit.
- Alle logboeken bekijken: journalctl
- Logboeken van een specifieke service bekijken: journalctl -u nginx.service
- Realtime logboeken bekijken: journalctl -f
Gebruiksvoorbeelden
Gebruiksvoorbeelden van de kerncommando's systemctl en journalctl van systemd.
Standaard opstartdoel controleren
systemctl get-default
Controleer welk target het systeem heeft opgestart.
Systeem afsluiten
sudo systemctl poweroff
Sluit het systeem veilig af via systemd. Voert dezelfde functie uit als het 'poweroff'-commando.
Specifieke service inschakelen/uitschakelen
sudo systemctl enable nginx
sudo systemctl disable nginx
Configureer een specifieke service om automatisch te starten bij het opstarten van het systeem, of schakel deze uit.
Service herstarten
sudo systemctl restart nginx
Herstart de actieve webserverservice. Handig bij het wijzigen van configuratiebestanden.
Tips & Aandachtspunten
Handige zaken om te weten bij het gebruik van systemd.
Tips
- systemd unit-bestanden bevinden zich meestal in de `/etc/systemd/system/` of `/lib/systemd/system/` directory.
- systemd integreert de meeste opstart-/afsluitgerelateerde commando's. Daarom zijn `halt`, `reboot`, `poweroff` enz. vaak symbolische links naar `systemctl`.
- Met het commando `systemctl status` kunt u niet alleen de status van een service, maar ook de meest recente logboeken in één keer controleren.