Services beheren in systemd¶
In dit artikel
systemd is het standaard init-systeem en servicemanager in de meeste moderne Linux-distributies:
- Ubuntu 16.04+ (sterk aanbevolen Ubuntu 20.04/22.04/24.04)
- Debian 8+ (Debian 11/12 – huidige LTS-releases)
- RHEL/CentOS 7+ (RHEL 9 / AlmaLinux/Rocky Linux 9 – moderne CentOS-vervangers)
- Fedora, openSUSE, Arch en anderen
Na het opstarten van de kernel wordt de controle overgedragen aan systemd (PID 1), die verantwoordelijk is voor:
- het starten en stoppen van services,
- het mounten van bestandssystemen,
- het configureren van het netwerk en de omgeving,
- het beheren van afhankelijkheden tussen componenten.
De primaire interface voor interactie met systemd is het hulpprogramma systemctl.
Basis syntaxis¶
Opmerking
In de meeste gevallen vereist het gebruik van systemctl supergebruikersrechten—gebruik sudo.
Service-status weergeven¶
| Taak | Opdracht |
|---|---|
| Lijst van actieve eenheden (services, sockets, timers, etc.) | systemctl list-units |
| Alleen draaiende services | systemctl list-units --type=service |
| Alle services (inclusief gestopte en inactieve) | systemctl list-units --type=service --all |
| Lijst van draaiende services | systemctl list-units --type=service --state=running |
| Zoeken naar een specifieke service (bijv. nginx) | systemctl list-units '*nginx*' |
| Gedetailleerde informatie over een service | systemctl status nginx (met logs, PID, afhankelijkheden) |
Opmerking
Voeg --no-pager toe om te voorkomen dat de uitvoer wordt gepagineerd (bijv. systemctl status nginx --no-pager).
Servicebediening beheren¶
We gebruiken nginx als voorbeeld, maar de opdrachten zijn van toepassing op elke service: sshd, postgresql, clamav-daemon, docker, etc.
| Actie | Opdracht | Opmerking |
|---|---|---|
| Status controleren | sudo systemctl status nginx | Toont of het draait, de PID, recente logs en fouten |
| Starten | sudo systemctl start nginx | Start de service tot de volgende herstart |
| Stoppen | sudo systemctl stop nginx | |
| Herstarten | sudo systemctl restart nginx | Volledig stoppen > starten (als het niet draait, wordt het gestart) |
| Configuratie herladen zonder te stoppen | sudo systemctl reload nginx | Werkt als de service SIGHUP ondersteunt (nginx, Apache, Postfix, etc.) |
| Herladen of herstarten | sudo systemctl reload-or-restart nginx | Valt terug op restart als reload niet wordt ondersteund |
| Probeer herstart (alleen als het draait) | sudo systemctl try-restart nginx | Veilig voor scripts |
| Controleren of service actief is | systemctl is-active nginx | Uitvoer: active / inactive / unknown |
| Controleren of service is mislukt | systemctl is-failed nginx | Uitvoer: failed als de service met een fout is afgesloten |
Opmerking
Na start/restart zal de service niet automatisch starten bij het opstarten—autostart vereist aparte configuratie.
Autostart beheren¶
| Actie | Opdracht | Wat gebeurt er |
|---|---|---|
| Autostart inschakelen | sudo systemctl enable nginx | Maakt een symlink van /usr/lib/systemd/system/nginx.service naar /etc/systemd/system/multi-user.target.wants/ |
| Autostart uitschakelen | sudo systemctl disable nginx | Verwijdert de symlink maar stopt het draaiende proces niet |
| Autostart-status controleren | systemctl is-enabled nginx | Mogelijke waarden: enabled, disabled, static, masked |
| Instellingen resetten > opnieuw inschakelen | sudo systemctl reenable nginx | Wist vorige overschrijvingen en schakelt de service opnieuw in |
| Resetten naar standaard | sudo systemctl preset nginx | Herstelt alle aangepaste instellingen naar de distributiestandaard (zelden gebruikt) |
Geavanceerde functies¶
1. Configuratieherlading van systemd forceren¶
Als u een .service-bestand hebt bewerkt:
2. Afhankelijkheden weergeven¶
3. Servicejournaal (via journalctl)¶
4. Een service maskeren (volledig uitschakelen, zelfs handmatig)¶
Nuttige opdrachten voor dagelijks gebruik¶
# Controleer snel of de service is ingeschakeld en draait
systemctl is-active --quiet nginx && echo "OK" || echo "STOPPED"
# Start en schakel autostart in met één opdracht
sudo systemctl start nginx && sudo systemctl enable nginx
# Schakel uit en stop de service
sudo systemctl stop nginx && sudo systemctl disable nginx
Opmerking
De --now-vlag (beschikbaar sinds systemd v220+, 2015) voert enable + start of disable + stop gelijktijdig uit.