Hoe Linux-services te vermelden met systemctl

Hoe Linux-services te vermelden met systemctl
fatmawati achmad zaenuri/Shutterstock.com
Gebruik het commando “systemctl –type=service –state=running” om alle actieve services op een Linux-systeem met systemd te zien. Dit toont u de naam, belasting, substatus en beschrijving van elke actieve service. U kunt ook de statuswaarde wijzigen om services te zien die dood, afgesloten, mislukt of inactief zijn.

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.

Een Linux-programma uitvoeren bij opstarten met systemd

VERWANTEen Linux-programma uitvoeren bij opstarten met systemd

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

Het gebruik van pstree via de kop om te bepalen of een Linux-installatie systemd gebruikt

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

Systemctl gebruiken om actieve services weer te geven

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.

De uitvoer van een systemctl-aanroep die wordt weergegeven in de less-bestandsviewer

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.

Het rechtergedeelte van de uitvoer van een systemctl-aanroep die wordt weergegeven in de less-bestandsviewer

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 systemd gevonden 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

Grep gebruiken om een ​​enkele service te isoleren van de resultaten

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

Rapporteren over mislukte services met systemctl

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

Op zoek naar services die zijn mislukt of zijn afgesloten met systemctl

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.

Een combinatie van mislukte en afgesloten services gevonden door systemctl

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

Unit-bestanden weergeven met systemctl

Er wordt een gekleurde tabel weergegeven.

Een lijst met eenheidsbestanden gegenereerd door systemctl, weergegeven in de less-bestandsbrowser

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

systemctl list-unit-files

Systemctl gebruiken om eenheidsbestanden weer te geven zonder filtering

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

Alle eenheidsbestanden weergegeven door systemctl en weergegeven in de less-bestandsbrowser

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

Systemctl gebruiken om te zoeken naar eenheidsbestanden die overeenkomen met een van de twee toestanden

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

Een combinatie van uitgeschakelde en mislukte eenheidsbestanden gevonden door systemctl

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

De details van een enkele service weergegeven door systemctl

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 man handleiding.
  • 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.

Nieuwste artikelen

Gerelateerde artikelen