Services beheren met Systemd: de complete gids voor Systemctl

Laatste update: 16/10/2025
Auteur: Isaac
  • Master systemctl: start/stop, inschakelen/uitschakelen en is-actief/is-ingeschakeld/is-mislukt-statussen.
  • Verkennen en debuggen: list-units, list-unit-files, dependencies, journalctl en systemd-analyze.
  • Optimaliseer met doelen, overschrijvingen en best practices (ExecReload, RestartSec, absolute paden).
  • Geldt voor WSL en andere distributies; begrijpt de beperkingen, kritiek en compatibiliteit met andere distro's.

services beheren met systemd

In de systemen Linux modern, systemd en zijn systemctl-tool Zij vormen het hart van het servicemanagement en van de dienstverlening zelf. BootAls u dagelijks met servers of desktops werkt, kunt u met deze hulpprogramma's eenvoudig services starten, stoppen, debuggen en automatiseren.

In deze gids vindt u een complete en praktische samenvatting voor services beheren met systemd: van de basis (starten, stoppen, inschakelen) tot geavanceerde opties zoals het isoleren van targets, het bewerken van schijven met overschrijvingen, het analyseren van de opstartprocedure of zelfs het inschakelen ervan in WSL. Alles met nuances wat betreft compatibiliteit tussen distributies en andere init-systemen, zodat u niet voor verrassingen komt te staan.

Wat is systemd en hoe organiseert het het systeem?

In een paar woorden, systemd is de init-systeem- en servicebeheerder die draait als PID 1 en de opstart en levenscyclus van gebruikersprocessen coördineert. Binnen het ecosysteem zijn de belangrijkste componenten "eenheden", die beheersbare bronnen vertegenwoordigen, zoals services, sockets, koppelpunten, apparaten of targets.

Eenheden worden beschreven met eenheidsbestanden met achtervoegsels die hun type aangeven: .service (services), .socket (sockets), .target (systeemstatussen), enzovoort. Deze bestanden bevinden zich in paden zoals /lib/systemd/system y /etc/systemd/systemen kan worden bekeken, weergegeven en gewijzigd met systemctl.

Naast systemctl wordt het ecosysteem aangevuld met hulpprogramma's zoals journalctl (archieven), inloggenctl (sessies), hostnamectl, lokaalectl, timedatectl of inspectie-instrumenten zoals systemd-cglsAlles bij elkaar leidt dit tot een verfijnder en gecentraliseerd bestuur.

Als u de standaard globale instellingen wilt wijzigen, kunt u deze bewerken /etc/systemd/system.conf (bijvoorbeeld DefaultTimeoutStartSec) enzovoort overschrijf compilatiewaarden door het hele systeem heen, zonder eenheid voor eenheid aan te raken.

Services starten, stoppen, opnieuw starten en opnieuw laden

Het dagelijks leven begint met de basis: services starten en stoppen. VS sudo systemctl start nombre.service om te beginnen en sudo systemctl stop nombre.service om te stoppen. Het .service-suffix is ​​optioneel; systemd is slim en leidt het meestal af. In omgevingen Windows bestaan commando's equivalenten voor Processen en services in Windows beheren.

Wanneer u configuratiewijzigingen doorvoert, raakt dit meestal opnieuw starten met sudo systemctl restart nombre.serviceAls de service hot-recharging ondersteunt, bespaart u een storing met sudo systemctl reloadAls u niet weet of u moet opladen of niet, trek dan herladen-of-herstarten en dat is alles

Houd er rekening mee dat sommige daemons bedoeld zijn om opnieuw verschijnen na een stop vanwege het eigen herstartbeleid. Dit komt vaak voor bij infrastructuuronderdelen zoals systemd-networkd, dus wees niet verbaasd als hij weer opstaat.

Wees voorzichtig met de varianten tussen distributies: op het Ubuntu-bureaublad is het gebruikelijk om met Netwerkmanager, zodat opdrachten zoals netwerkstatus kunnen worden opgevraagd in NetworkManager.service in plaats van systemd-networkd.service.

Inschakelen, uitschakelen en status controleren

Voor een dienst automatisch starten met het systeem, gebruik sudo systemctl enable nombre.service. Dit creëert symbolische koppelingen van uw eenheidsbestand naar de paden .../target.wants van het overeenkomstige doel. In Windows zijn er richtlijnen over welke services u niet mag aanraken, bijvoorbeeld Windows 11-services die u niet mag uitschakelen.

  Wat is de schermresolutie van mijn mobiele telefoon?

Als u dit niet bij het opstarten wilt, schakel het uit met sudo systemctl disableHoud er rekening mee dat u met inschakelen/uitschakelen de service in de huidige sessie niet start of stopt. U combineert inschakelen/uitschakelen op de juiste manier met starten/stoppen.

Om de status gedetailleerd te controleren, systeemctl-status Het geeft je informatie over de belasting, activiteit, PID, cgroup en de laatste logregels voor de unit. Als je gewoon een snel oordeel wilt: systemctl is-active (rennend of niet), systemctl is-enabled (ingeschakeld of uitgeschakeld) en systemctl is-failed (mislukt, inactief, onbekend) met handige exit-codes voor scripts.

Verken het systeem: lijst-eenheden en lijst-eenheid-bestanden

Als u een panoramisch uitzicht nodig heeft, systemctl lijsteenheden Geeft de actieve eenheden weer. U ziet de kolommen UNIT, LOAD, ACTIVE, SUB en DESCRIPTION, zodat u in één oogopslag kunt zien wat er gebeurt. In Windows is de opdracht Processen in Windows weergeven met TaskList biedt een soortgelijk beeld.

Als u uitgebreider wilt zijn, voeg dan toe -allemaal Om inactieve personen op te nemen, filtert u op status met --state= en per type met --type=serviceZo kunt u bijvoorbeeld alle service-eenheden weergeven, ongeacht hun activiteit.

Om te zien wat er is geïnstalleerd en wat het opstartbeleid is, systemctl lijst-eenheidsbestanden Geeft de eenheidsbestanden met een status weer: ingeschakeld, uitgeschakeld, statisch of gemaskeerd. 'Statisch' geeft eenheden zonder sectie aan, bedoeld als afhankelijkheden of eenmalige uitvoering.

Inspecteer eenheden, bijgebouwen en eigendommen

met systemctl cat naam.service Je ziet het exacte unitbestand dat systemd heeft geladen (met samengevoegde overrides). Ideaal om te controleren welke richtlijnen daadwerkelijk actief zijn.

Afhankelijkheden worden weergegeven met systemctl lijst-afhankelijkheden. Je kunt toevoegen --all voor recursie, --reverse voor inverse afhankelijkheden, of --before/--after voor de relatieve volgorde tussen eenheden.

Als u details op laag niveau nodig hebt, systemctl show dumpt sleuteleigenschappen in formaat clave=valorGebruik voor iets specifieks -p Propiedad en je krijgt alleen wat je interesseert (bijvoorbeeld conflicten of ordelijke relaties).

Als een dienst helemaal niet gestart zou moeten worden, masker het met sudo systemctl mask nombre.service (wijst naar /dev/null). Dan gewoon unmask Het herstelt de vorige status. Een masker blokkeert handmatige en automatische opstartprocedures. In Windows-omgevingen kunt u bijvoorbeeld ook beschadigde services herstellen via de Services-console. Herstel verwijderde services van services.msc.

Bewerkingseenheden: overschrijvingen en daemon-herladingen

Om aan te passen zonder het originele bestand aan te raken, systemctl bewerk naam.service opent een override in /etc/systemd/system/nombre.service.d/override.confWat u er ook neerzet, het prevaleert zonder dat u de basis van de leverancier verliest.

Als u de hele eenheid wilt herschrijven, gebruik dan -vol en zal een kopie opslaan in /etc/systemd/system. Wanneer u overschrijvingen of aangepaste eenheden verwijdert, moet u rekening houden met: herlaad de daemon met sudo systemctl daemon-reload zodat er niet meer naar verwezen wordt.

Als u uw wijzigingen niet meer nodig hebt, kunt u: verwijder de .d-map van de override of de complete eenheid in /etc/systemd/system. Daarna een daemon-reload en het systeem keert terug naar de basisdefinities.

Doelen en relatie met runlevels

De doelen vertegenwoordigen de toestanden van het systeem (bijv. multi-user.target of graphical.target) en groeperen de eenheden die nodig zijn om die status te bereiken. Ze lijken op de oude runlevels, maar zijn flexibeler en beter samen te stellen.

Vraag het standaarddoel op met systemctl get-default en verander het met standaard instellen (bijvoorbeeld graphical.target (om te beginnen in een grafische omgeving). U kunt geïnstalleerde doelen weergeven met list-unit-files --type=target en activa met list-units --type=target.

Als u een drastische reis moet maken, geïsoleerd stopt wat niet tot het doel behoort en activeert de afhankelijkheden ervan. Voordat u dit doet, is het een goed idee om de volgende stappen te doorlopen. list-dependencies van het doel, om te voorkomen dat er per ongeluk iets belangrijks omver wordt gestoten.

  Reparatie: draad gevangen in gadgetstuurprogramma-fout in Home Windows 10

Bovendien stelt systemctl snelkoppelingen met waarschuwingen beschikbaar aan aangemelde gebruikers: redden (enkele-gebruikersmodus), halte, poweroff y opnieuw op te startenOp veel machines zijn traditionele commando's zoals reboot zijn al gekoppeld aan systemd.

Runlevel SysV Doelsysteem Beschrijving
0 runlevel0.target / poweroff.target Schakel het systeem uit helemaal.
1, s (enkel) runlevel1.target / rescue.target Reddingsmodus, enkele gebruiker.
2-4 runlevel2-4.doel / multi-user.doel Meerdere gebruikers zonder grafische interface.
3 runlevel3.target / multi-user.target Servermodus typisch zonder GUI.
5 runlevel5.target / graphical.target Meerdere gebruikers met GUI.
6 runlevel6.target / reboot.target Herstart de machine.
noodgeval nooddoel Noodshell minimaal.

Stap voor stap uw eigen service (.service) maken

Voor een service op maat, creëer de eenheid in /etc/systemd/systeem. Bijvoorbeeld ttrssupdate.service Het kan een beschrijving, afhankelijkheden, de uitvoerende gebruiker en de uit te voeren opdracht bevatten.

Een typisch voorbeeld hiervan (past de werkelijke routes aan): met Beschrijving, Na, Gebruiker, ExecStart en WantedBy U definieert de essentiële onderdelen om aan de slag te gaan met het multi-user systeem.

Wat betreft vergunningen en eigendom is het belangrijk dat het bestand behoort toe aan wortel en consistente rechten hebben. Vermijd te permissieve rechten; hoewel sommige voorbeelden laten zien chmod 777, de aanbevolen praktijk is restrictiever om de deur niet te openen voor veiligheidsproblemen.

Nadat u de eenheid hebt gemaakt of gewijzigd, voert u het volgende uit: sudo systemctl daemon-reload, maakt het mogelijk met enable en begint met start. Vanaf daar kunt u dat doen stoppen, restart en raadplegen toestandOm te debuggen, journalctl -u tu-servicio.service zal je laten zien logs medewerkers.

Equivalenties met SysV en andere inits

Als je van SysV komt, denk dan eens aan systemctl start/stop/restart/reload/status als vervangers voor service nombre start/stop/.... Voor het begingedeelte, inschakelen / uitschakelen vervangt chkconfig on/offEn list-unit-bestanden geeft een overzicht van wat er geactiveerd is.

Op oudere systemen kunt u problemen tegenkomen service –status-alles, die daemons met vlaggen (omhoog), (omlaag) of (onbekend) weergeeft. Bij Upstart (Ubuntu 14.04, RHEL6) wordt het gebruikt initctl-lijst om statussen te bekijken, zoals actief, gestopt of wachtend.

In omgevingen die gebruik maken van OpenRC (Ezelspinguïn, Alpen), rc-status Geeft services weer per runlevel met de statussen gestart/gestopt/mislukt/gecrasht. U kunt zelfs de huidige runlevel controleren met rc runlevelVoor geavanceerde procesbeheertaken in Windows zijn er ook hulpmiddelen van derden, bijvoorbeeld Gebruik Process Hacker om prioriteiten te beheren.

Diagnostiek, logboeken en opstartprestaties

Om definities te controleren, systemd-analyse Het heeft verificatie- en analysefuncties. U kunt een radiografie Bekijk vanaf het begin wat het langste duurde en teken een SVG.

Veel voorkomende commando's: systemd-analyse van schuld (keer per dienst), systemd-analyse kritieke keten (kritieke keten van afhankelijkheden) en systemd-analyse plot (genereert een .svg met de opstarttijdlijn).

Als een service faalt, begint het met journalctl -u naam.service om fouten en waarschuwingen te bekijken. U kunt defecte schijven weergeven en, als het afsluiten of opnieuw opstarten te lang duurt, controleren op geplaatste werken en annuleer ze voordat u het opnieuw probeert.

Als u nieuwe eenheden bewerkt of creëert, vergeet dan niet: systemd-analyze verifiëren om syntaxisfouten of verwijzingen naar niet-bestaande bestanden te detecteren voordat de service wordt ingeschakeld en gestart.

Goede managementpraktijken

Gebruik in eenheidsbestanden altijd absolute paden in ExecStart/ExecReload en configuratiebestanden. Vertrouw niet op omgevingsvariabelen zoals $PATH omdat systemd ze niet zal beschouwen zoals uw shell dat zou doen.

  Hoe u eenvoudig contacten vanuit Excel en CSV naar Outlook kunt importeren

Definiëren ExecReload als uw service dynamisch opladen ondersteunt. Op deze manier kunt u systemctl reload zonder opnieuw op te starten, wat essentieel is voor servers met hoge beschikbaarheid.

configureert HerstartSec Samen met herstartbeleid om hectische herstartlussen te voorkomen. Een kleine vertraging helpt afhankelijkheden en gedeelde resources te stabiliseren.

Documenteren en monitoren: lijsten opslaan als systemctl lijst-eenheidsbestanden –type service –all > services.txt, brengt afhankelijkheden in kaart met list-dependencies --reverse en bewaakt de status en het verbruik. Aan te vullen met Prometheus/Grafana of APM-oplossingen indien uw situatie dit vereist.

Schakel op kritieke externe computers de noodmodus Het kan ertoe leiden dat u door een configuratiefout geen netwerk meer heeft. En natuurlijk moeten wijzigingen in de staging worden gevalideerd voordat ze in productie worden genomen.

Compatibiliteit, acceptatie en bedrijfsvisie

Hoewel vandaag systemd domineert in de meeste distributies, het is niet universeel. Fedora heeft het al vroeg opgenomen; Debian gebruikt het al sinds versie 8; RHEL en CentOS sinds RHEL 7; Ubuntu heeft het in 15.04 overgenomen; Arch en openSUSE gebruiken het al jaren, onder andere.

Niet alles was applaus: zijn werk is bekritiseerd complexiteit en omvang, het potentiële effect van afhankelijkheid van het ecosysteem en een zekere afstand tot de filosofie Unix Minimalistisch. Voor beginnende beheerders kan de leercurve steil lijken.

Tot de praktische nadelen behoren: machtigingen en beveiliging Als ze niet correct zijn geconfigureerd, kunnen er afhankelijkheidsconflicten ontstaan, kunnen opstartproblemen trager worden vanwege slecht ingestelde time-outs of kunnen er fouten optreden na updates als de eenheden niet worden onderhouden.

Dat gezegd hebbende, draagt ​​het in bedrijfsomgevingen bij homogeniteit, telemetrie en controleDankzij de modulariteit, ingebouwde logs en declaratieve afhankelijkheidsmodellering is het eenvoudig om op schaal te werken en de kosten te verlagen. de tijd reparatiemiddelen.

Systemd in WSL: hoe je het inschakelt en wat het verandert

Als u met WSL 2 op Windows werkt, kunt u nu: systemd inschakelen om nog dichter bij een bare-metal Linux te komen. Op de huidige Ubuntu geïnstalleerd met wsl --install Dit zit er standaard al in.

Voor andere distributies op WSL 2, bewerk /etc/wsl.conf en voegt eraan toe: in een lijn en systemd=true in een andere. Sluiten en rennen wsl.exe –afsluiten en PowerShell om WSL opnieuw te starten; als u terugkomt, controleer dan met systemctl status.

Zorg ervoor dat u op Debian/Ubuntu/Kali systemd en systemd-sysv geïnstalleerd. Belangrijk: Door PID 1 aan systemd te geven, past WSL zijn interne architectuur aan; echter, Services houden het WSL-exemplaar niet in leven voor onbepaalde tijd, net als voorheen.

Voor iedereen die ontwikkelt met snaps, microk8s of andere componenten die afhankelijk zijn van systemd, zorgt deze integratie voor minder problemen en zorgt ervoor dat het gedrag beter overeenkomt met wat u in productie ziet.

Het is de moeite waard om te onthouden dat je met systemd ook aanvullende hulpprogramma's hebt, zoals journalctl voor de krant, of systemd-analyse om de boot te profileren en units te verifiëren. Met een beetje orde en een paar goede gewoontes wordt het een zeer krachtige bondgenoot voor admins en devops.

Services wijzigen in Windows 11
Gerelateerd artikel:
Services aanpassen in Windows 11: volledige controle, beveiliging en prestaties