
Uw Linux-computer is afhankelijk van veel achtergrondtaken die services of daemons worden genoemd. Op systemd-gebaseerde distributies heb je ingebouwde commando’s waarmee je kunt zien welke services actief, uitgeschakeld of mislukt zijn.
Services en Daemons
Services en daemons zijn achtergrondtaken die zonder gebruikersinterface worden uitgevoerd, geen menselijke interactie vereisen en meestal worden gestart terwijl de computer opstart.
Op een gegeven moment werden diensten gelanceerd door init, wat het allereerste proces was dat werd gelanceerd. De details van de services werden bewaard in een verzameling scripts in de map “/etc/init/d”. Op niet-systemd distributies is dat nog steeds het geval.
In de systemd-wereld worden services gelanceerd door systemd wat nu het eerste proces is dat wordt gelanceerd. De details van de diensten worden opgeslagen in eenheid bestanden bevindt zich in de map “/usr/lib/systemd”.
Volgens de man-pagina, systemd is systeem- en servicemanager. U kunt de systemctl opdracht om verschillende aspecten van het systemd-systeem te inspecteren en te besturen, inclusief services en daemons.
Omdat we hier naar systemd-specifieke commando’s kijken, is het eerste dat u moet weten of u een op systemd gebaseerde distributie uitvoert of niet.
init of op systeembasis?
De overgrote meerderheid van Linux-distributies gebruikt systemd, inclusief Arch, Red Hat en Debian, en veel van de distributies die daarvan zijn afgeleid. Dat omvat de Ubuntu-familie van distributies, Fedora en zijn spins, en Manjaro en de andere op Arch gebaseerde distributies.
Er zijn echter forks of smaken van sommige van deze distributies die speciaal zijn gemaakt om te voorkomen dat je systemd moet gebruiken. Niet alleen dat, maar er zijn andere init-systemen die iemand zou kunnen gebruiken in plaats van degene die standaard in hun distributie zat, zoals runit of s6-linux-init.
Als je een Linux-computer moet beheren die je niet zelf hebt ingesteld, is de enige manier om er zeker van te zijn of hij systemd gebruikt of niet, door te controleren. We kunnen dat doen door naar de procesboom te kijken met de pstree opdracht. We hoeven alleen maar de top van de boom te zien – we zijn tenslotte op zoek naar het allereerste proces dat wordt uitgevoerd – dus we zullen de uitvoer door de head commando en vraag om de eerste vijf items.
pstree | head -5

Dat kunnen we zien systemd is het eerste proces dat wordt uitgevoerd na het opstarten, dus we zitten zeker op een systemd-gebaseerde installatie van Linux.
Systemctl gebruiken om services weer te geven
De opdracht om services en daemons weer te geven is systemctl. We kunnen de verfijnen systemctl commando met de type en state opties. We vragen het systemctl om te rapporteren over services die actief zijn.
systemctl --type=service --state=running

Er wordt een informatietabel gegenereerd. Als het te breed of te lang is voor uw terminalvenster, wordt het weergegeven in uw standaard bestandsviewer, wat waarschijnlijk het geval zal zijn less.

Druk op de toets pijl-rechts om het rechteruiteinde van de tabel te zien. Druk op de pijl-links om terug te keren naar de gebruikelijke weergave.

Druk op de Q-toets om minder af te sluiten. De kolommen die worden weergegeven zijn:
-
Eenheid: De naam van de service of daemon. De kolom is getiteld “Eenheid” omdat alles wat in deze kolom staat, is gelanceerd met behulp van informatie
systemdgevonden in een eenheidsbestand. - Laden: De laadstatus van de service of daemon. Het kan worden geladen, niet gevonden, slechte instelling, fout of gemaskeerd.
- Actief: De algehele status van de service of daemon. Deze kan actief, opnieuw geladen, inactief, mislukt, activerend of deactiverend zijn.
- SUB: De substatus van de service of daemon. Het kan dood, afgesloten, mislukt, inactief of actief zijn.
- Beschrijving: Een korte beschrijving van het apparaat.
We kunnen de output van pipen systemctl door grep als we ons op één dienst willen concentreren. Deze opdracht isoleert de tabelinvoer voor de ssh onderhoud.
systemctl --type=service --state=running | grep ssh

Tot nu toe hebben we de inhoud van de tabel gefilterd door de state=running keuze. We kunnen in plaats daarvan elk van de mogelijke waarden van de substatus gebruiken: dood, verlaten, mislukt, inactief of actief.
Laten we eens kijken naar mislukte services:
systemctl --type=service --state=failed

Combinaties van substaten kunnen worden gebruikt. Typ ze als een door komma’s gescheiden lijst. Zorg ervoor dat u geen witruimte tussen de opties opneemt. Houd er rekening mee dat hiermee services worden gevonden die overeenkomen of staat.
systemctl --type=service --state=failed,exited

Als u op de toets Pijl-rechts drukt om naar de kolommen buiten het scherm te kijken, ziet u dat we een combinatie van afgesloten en mislukte services in de lijst hebben.

Standaard, systemctl somt processen op—services en daemons—die zijn gestart door systemd omdat systemd een eenheidsbestand gevonden dat een geldig eenheidsbestand voor hen bevatte. Daarom is de verkorte term voor al deze processen ‘eenheden’.
Er is een mogelijkheid om expliciet te vragen systemctl om eenheden weer te geven, maar aangezien dit de standaardactie is, wordt deze niet vaak gebruikt.
Deze opdrachten produceren dezelfde resultaten.
sudo systemctl list-units --type=service --state=running
sudo systemctl --type=service --state=running
Systemctl gebruiken om unit-bestanden weer te geven
We kunnen de reikwijdte van de systemctl commando door de list-unit-files keuze. Dit rapporteert niet alleen over services en daemons die zijn gelanceerd, het vermeldt ook alle eenheid bestanden geïnstalleerd op uw computer.
systemctl list-unit-files --state=enabled

Er wordt een gekleurde tabel weergegeven.

Het verwijderen van de state optie verwijdert de filtering. De uitvoer bevat alle geïnstalleerde unit-bestanden, ongeacht hun status.
systemctl list-unit-files

De uitvoer zal veel meer items bevatten dan de resultaten van de vorige opdrachten.

Op onze testcomputer is de resultatenlijst bijna vier keer langer dan de uitvoer van onze vorige opdrachten.
Als u toch gebruik wilt maken van de state optie, je kunt er meerdere staten mee gebruiken zoals we eerder zagen. Dezelfde regels zijn van toepassing. Geef de opties op als door komma’s gescheiden waarden en voeg geen witruimte toe.
Met deze opdracht worden alle eenheidsbestanden weergegeven die zijn uitgeschakeld of niet kunnen worden gestart.
systemctl list-unit-files --state=enabled,failed

Er wordt een beperkt aantal resultaten weergegeven, gefilterd op basis van de selecties die u hebt gemaakt met de statusoptie.

One Service in detail bekijken
Als iets over één service of daemon uw interesse wekt en een diepere duik verdient, kunt u dit in detail bekijken met behulp van de systemctl-statusoptie.
Laten we eens kijken naar de SSH-daemon, sshd. Het enige wat we hoeven te doen is de statusoptie en de naam van de service of daemon te gebruiken.
systemctl status sshd

Dit compacte display toont:
- De naam van de dienst samen met een korte omschrijving. Een kleurgecodeerde stip geeft aan of het actief is of niet. Groen betekent dat het actief is, rood betekent dat het niet werkt.
- Wat er is geladen, inclusief het pad naar het unit-bestand.
- Hoe lang het al draait.
- Waar de documentatie zich in de
manhandleiding. - De proces-ID van het actieve exemplaar.
- Hoeveel gelijktijdige exemplaren van deze service worden uitgevoerd. Meestal zal dit er een zijn.
- Hoeveel geheugen wordt verbruikt.
- Hoeveel CPU-tijd is verbruikt.
- De stuurgroep waartoe de service behoort.
Relevante vermeldingen uit het systeemlogboek worden ook weergegeven. Dit zijn meestal gebeurtenissen zoals het opstarten van de service. Deze kunnen informatief zijn als u op zoek bent naar een service of daemon die niet correct is gestart.
De autonome systemen
Services en daemons bieden veel van de automatische acties van uw besturingssysteem, dus ze zijn van vitaal belang. Dat betekent dat ook hun gezondheid van levensbelang is.
Een overzicht krijgen van uw services, daemons en eenheidsbestanden is eenvoudig en informatief. Het is ook een waardevolle stap voor het oplossen van problemen als een service of daemon weigert te starten.