Het beheren van een dienst of groep diensten op een moderne Linux-pc kan een gedoe zijn, als je niet zeker weet wat je doet. Gelukkig heeft Ubuntu Systemctl je gedekt om diensten te beheren op een Linux-pc.
In deze tutorial leer je hoe je Systemd-diensten beheert op een Ubuntu-pc door verschillende systemctl
-opdrachten uit te voeren.
Klaar? Tijd om aan de slag te gaan!
Vereisten
Deze tutorial zal een praktische demonstratie zijn maar vereist geen speciale tools, zolang je maar Ubuntu 16 of een nieuwere versie hebt, ben je klaar om te beginnen. Deze tutorial maakt gebruik van Ubuntu 20.04.3 LTS-versie voor de demonstraties.
Wat is Ubuntu Systemctl?
Voordat je Ubuntu systemctl-opdrachten uitvoert, leer eerst wat Systemctl is. Systemctl is een opdrachtregelhulpprogramma om systemd– en systeemdiensten te controleren en beheren.
Kortom, Systemctl is een bedieningspaneel of servicemanager voor het init-systeem van systemd om componenten te initialiseren nadat de Linux-kernel is opgestart. Systemctl is een verzameling bibliotheken, daemons en hulpprogramma’s die je kunt gebruiken om diensten te beheren.
Om diensten effectief te beheren, ken de verschillende dienststaten als volgt:
- Ingeschakeld – geeft aan dat een service is geconfigureerd om te starten wanneer het systeem wordt opgestart.
- Uitgeschakeld – geeft aan dat een service is geconfigureerd om niet te starten wanneer het systeem wordt opgestart.
- Actief – geeft aan dat een service momenteel in de actieve staat verkeert.
- Inactief – geeft aan dat een service momenteel niet actief is maar mogelijk start wanneer een toepassing probeert die service te starten.
Alle services vermelden
Nu je de verschillende staten van services kent, wil je misschien een lijst van alle services op je Ubuntu-pc zien. Het vermelden van alle services biedt een handvol informatie die je voorbereidt op het beheer van services.
Open je terminal en voer de onderstaande opdracht uit om alle service-eenheden (list-units
) (actief, draaiend, afgesloten of mislukt) met de service ingesteld als eenheidstype (--type=service
) weer te geven.
Kies een van de services uit de lijst die je later in deze tutorial wilt beheren en noteer de naam van de EENHEID (bijv. apache2). Druk op de spatiebalk om naar beneden te scrollen of druk op de toets “Q” om de opdracht af te sluiten.
Overigens, hier is een goede gids over Linux Shell Scripting.

Diensten vermelden met een specifieke status
In plaats van alle diensten op te sommen, wil je misschien de lijst van diensten inkorten. Als dat het geval is, zal het toevoegen van de parameter --state
het klusje klaren, omdat het de diensten filtert met de specifieke status die je opgeeft.
Voer een van de onderstaande commando’s uit om alle actieve diensten op te sommen (--type=service --state=active
), zowel draaiende als gestopte.

Vergelijkbaar, om alleen gestopte of draaiende diensten op te sommen, verander je de statuswaarde van actief
naar draaiend
of gestopt
, zoals getoond in de onderstaande commando’s:


Diensten met activering vermelden
Naast het vermelden van actieve, draaiende en gestopte diensten, kun je ook ingeschakelde en uitgeschakelde diensten vermelden door de grep
-opdracht te gebruiken.
Voer een van de onderstaande commando’s uit om (list-unit-files
) uitgeschakelde of ingeschakelde diensten op te sommen (--type=service
).
Let op een ingeschakelde service, zoals hieronder weergegeven, want later heb je deze nodig om een service uit te schakelen, maar deze handleiding maakt gebruik van de acpid.service voor demonstratie. De acpid is een uitbreidbare daemon die gebeurtenissen van het Advanced Configuration and Power Interface (ACPI) ondersteunt.

Lijst van Service-eigenschappen
Naast het vermelden van services, wil je misschien de eigenschappen van een service controleren. Inzicht hebben in service-eigenschappen is handig voor het oplossen van problemen, parameters voor het proces, of herstartgedrag.
Voer het onderstaande commando uit om de eigenschappen van een service (acpid.service
) weer te geven in een sleutel=waarde-indeling.

Als je alleen op zoek bent naar een specifieke service-eigenschap, kun je de -p
vlag doorgeven met de naam van de eigenschap.
Voer het onderstaande commando uit om de eigenschap MainPID
van een service (acpid.service
) weer te geven.

Beheer van een Specifieke Service
Nu de basisprincipes van het vermelden van services uit de weg zijn, is het tijd om een specifieke (enkele) service te beheren door de systemctl stop
en start
commando’s uit te voeren.
De Apache-service (apache2) wordt gebruikt voor de volgende demonstraties, maar je kunt de service die je hebt genoteerd in de sectie “Alle services vermelden” vrij beheren. Maar voordat je een service stopt of start, moet je eerst de status van de service verifiëren.
Voer de onderstaande opdracht uit in een terminal om gedetailleerde informatie over de apache2
-service te bekijken, zoals de status
.
Hieronder kun je zien dat de apache2-service actief is en draait.

Het invoeren van het sudo-wachtwoord is niet nodig om de servicestatus te bekijken, omdat je de servicestatus niet wijzigt. Maar als je een service start, stopt of herstart, moet je het sudo-commando voorvoegen en het sudo-wachtwoord invoeren.
Een service stoppen
Misschien wil je een service stoppen die is blijven hangen en nog steeds op de achtergrond draait. In dat geval is het systemctl stop
-commando wat je nodig hebt. Voer het onderstaande systemctl
-commando uit om de apache2
-service te stoppen.
Als je liever meerdere services tegelijk wilt stoppen, specificeer dan elke service gescheiden door een spatie, zoals dit:
sudo systemctl stop sshd apache2
. Met deze opdracht stop je zowel de sshd- als de apache2-services in één keer.
Voer nu het systemctl status
-commando uit, net zoals je eerder hebt gedaan, om te verifiëren of de apache2-service is gestopt.
Je ziet hieronder dat de status van de apache2-service is gewijzigd naar inactief (uitgeschakeld), wat aangeeft dat de service is gestopt.

Een service starten
Nu, hoe start je een service als je merkt dat deze helemaal niet draait? Je voert een opdracht uit die lijkt op het stoppen van de service, namelijk het systemctl start
-commando. Voer de onderstaande opdracht uit om de apache2
-service te starten
.
Net zoals bij het stoppen van meerdere services, kun je ook meerdere services starten in één enkele opdrachtregel. Vervang het
stop
-commando door hetstart
-commando, zoals dit:sudo systemctl start sshd apache2
Voer nu nogmaals het systemctl status
-commando uit om te controleren of de apache2
-service draait.
Als je de status active (running) ziet, zoals hieronder weergegeven, dan ben je klaar omdat de service weer actief is.

Als je de service liever meteen opnieuw wilt starten zonder deze eerst te stoppen. Als dat het geval is, ga dan voor het
systemctl restart
-commando in plaats daarvan, zoals dit:sudo systemctl restart apache2
Inschakelen of uitschakelen van een service
Misschien is er een specifieke service die je liever wel of niet wilt starten bij het opstarten van het systeem. Als dat het geval is, is het uitvoeren van het systemctl enable
of disable
-commando de beste aanpak.
Met het enable
-subcommando kun je de standaard opstartinstellingen op je systeem configureren, terwijl het disable
-subcommando voorkomt dat een service wordt gestart bij het opstarten van het systeem.
Voer de onderstaande systemctl
-opdracht uit om de service (acpid.service
) uit te schakelen die je hebt genoteerd in de sectie “Ingeschakelde services vermelden”. Voer je sudo-wachtwoord in om de uitvoering van de opdracht te autoriseren.

Nu aangezien acpid.service OS-gestuurde configuratie en Energiebeheer (OSPM) ondersteunt; moet je het opnieuw inschakelen. De opdracht om de service in te schakelen is vergelijkbaar met het uitschakelen van een service.
Voer de onderstaande systemctl
-opdracht uit om acpid.service
te inschakelen
. Met deze opdracht wordt de service weer geregistreerd in de standaard opstartinstellingen van je systeem.

Conclusie
In deze handleiding heb je ontdekt hoe snel je services kunt stoppen, starten of herstarten door Ubuntu systemctl
-opdrachten uit te voeren. Je hebt ook geleerd dat de systemctl
-opdracht je in staat stelt om niet slechts één, maar meerdere services tegelijkertijd te beheren.
Met deze nieuw verworven kennis, waarom zou je dan niet het automatiseren van het beheer van services in je Ubuntu-systeem overwegen?