Correcte manier om Ubuntu systemctl te gebruiken om Systemd te beheren

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.

systemctl list-units --type=service

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.

Listing All Services (active, running, exited, or failed)

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.

systemctl list-units --type=service --state=active
Listing Services on “active” State

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:

systemctl --type=service --state=running
systemctl --type=service --state=exited
Listing Services on “running” State
Listing Services on “stopped” State

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).

## Lijst met alle ingeschakelde diensten
systemctl list-unit-files --type=service | grep enabled
## Lijst met alle uitgeschakelde diensten
systemctl list-unit-files --type=service | grep disabled

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.

Listing Enabled Services

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.

systemctl show acpid.service
Showing Service Properties

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.

systemctl show acpid.service -p MainPID
Showing Specific Service Property

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.

systemctl status apache2

Hieronder kun je zien dat de apache2-service actief is en draait.

Viewing apache2 Service Status

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.

sudo systemctl stop apache2

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.

systemctl status apache2

Je ziet hieronder dat de status van de apache2-service is gewijzigd naar inactief (uitgeschakeld), wat aangeeft dat de service is gestopt.

Verifying if apache2 Service is Stopped

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.

sudo systemctl start apache2

Net zoals bij het stoppen van meerdere services, kun je ook meerdere services starten in één enkele opdrachtregel. Vervang het stop-commando door het start-commando, zoals dit: sudo systemctl start sshd apache2

Voer nu nogmaals het systemctl status-commando uit om te controleren of de apache2-service draait.

systemctl status apache2

Als je de status active (running) ziet, zoals hieronder weergegeven, dan ben je klaar omdat de service weer actief is.

Starting apache2 service

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.

sudo systemctl disable acpid.service
Disabling a Service

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.

sudo systemctl enable acpid.service
Enabling a Service

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?

Source:
https://adamtheautomator.com/ubuntu-systemctl/