Hoe Lijst Je Alle Draaiende Diensten Van Systemctl Op?

Gepubliceerd 9 juli 2024

Probleem: Actieve Services Bekijken in Linux

Het beheren van services op een Linux-systeem is een taak voor beheerders en gebruikers. Systemctl, het hoofdcommando voor het besturen van systemd, biedt een manier om deze services te beheren en te monitoren. Een overzicht krijgen van alle actieve services kan moeilijk zijn zonder de juiste commando's en opties te kennen.

Alle Actieve Services Weergeven met Systemctl

Basiscommando om Services Weer te Geven

Om alle services die door systemd worden beheerd weer te geven, gebruik je dit commando:

systemctl list-units --type=service

Dit commando toont een tabel met informatie over elke service unit. De output bevat:

  • UNIT: De naam van de service unit
  • LOAD: Of de unit definitie werd geladen
  • ACTIVE: De hoog-niveau unit activatiestatus
  • SUB: De laag-niveau unit activatiestatus
  • DESCRIPTION: Een korte beschrijving van het doel van de unit

Om alleen actieve services te tonen, voeg je de optie --state=active toe:

systemctl list-units --type=service --state=active

Filteren op Actieve Services

Om alleen de services weer te geven die actief zijn, gebruik je:

systemctl list-units --type=service --state=running

Dit commando filtert inactieve of mislukte services eruit en toont alleen degene die actief zijn op je systeem.

Voor een meer compacte weergave, gebruik je de optie --no-pager:

systemctl list-units --type=service --state=running --no-pager

Dit voorkomt dat de output wordt gepagineerd, wat nuttig is wanneer je de resultaten wilt doorsturen naar andere commando's of bestanden.

Voor een snel overzicht van actieve services zonder extra details, gebruik je:

systemctl list-units --type=service --state=running --plain --no-legend

Dit commando verwijdert de kop- en voettekstinformatie en geeft een schone lijst van actieve services.

Om het aantal actieve services te tellen, stuur je de output door naar wc:

systemctl list-units --type=service --state=running --plain --no-legend | wc -l

Dit commando geeft het totale aantal actieve services op je systeem weer.

Tip: Sorteer actieve services op geheugengebruik

Om te begrijpen welke services de meeste bronnen gebruiken, kun je de actieve services sorteren op geheugengebruik. Dit kan systeembeheerders helpen de systeemprestaties te optimaliseren.

Hier is een commando om actieve services gesorteerd op geheugengebruik weer te geven:

systemctl list-units --type=service --state=running --no-pager | awk '{print $1}' | xargs -I {} systemctl status {} | grep Memory | sort -rnk 3 | head -n 10

Dit commando:

  1. Geeft alle actieve services weer
  2. Extraheert de servicenamen
  3. Haalt de status van elke service op
  4. Filtert op de geheugengebruik regel
  5. Sorteert de resultaten op geheugengebruik (hoogste naar laagste)
  6. Toont de top 10 geheugen-consumerende services

De output ziet er zo uit:

Memory: 1.2G
Memory: 800.5M
Memory: 456.3M
Memory: 234.1M
Memory: 189.7M
Memory: 156.2M
Memory: 98.4M
Memory: 76.9M
Memory: 54.3M
Memory: 43.8M

Geavanceerde Systemctl Commando's voor Servicebeheer

Gedetailleerde Service-informatie Bekijken

Om meer informatie over een service te krijgen, gebruik je het commando systemctl status gevolgd door de servicenaam:

systemctl status service_name

Dit commando geeft een overzicht van de service, waaronder:

  • Huidige status (actief, inactief, mislukt)
  • Hoofd PID (Proces ID)
  • Geheugengebruik
  • CPU-gebruik
  • Starttijd
  • Recente logboekregels

Example: SSH Service Details Bekijken

systemctl status sshd

De output bevat de huidige status van de service, de locatie van het configuratiebestand en recente logboekregels, die helpen bij het oplossen van problemen.

Servicestatus Controleren

Om de status van een service te controleren, gebruik je:

systemctl is-active service_name

Dit commando geeft "active" terug als de service actief is, of "inactive" als dat niet het geval is.

Om te controleren of een service bij het opstarten start:

systemctl is-enabled service_name

Dit geeft "enabled" terug als de service automatisch bij het opstarten start, of "disabled" als dat niet het geval is.

Je kunt ook het commando systemctl show gebruiken om specifieke eigenschappen van een service te krijgen:

systemctl show -p ActiveState service_name
systemctl show -p UnitFileState service_name

Deze commando's tonen de huidige actieve status en of de service is ingeschakeld.

Om alle mislukte services weer te geven:

systemctl --failed --type=service

Dit commando helpt bij het identificeren van services die problemen hebben en mogelijk aandacht nodig hebben.

Alternatieve Methoden om Services Weer te Geven

Het PS Commando Gebruiken

Het commando ps biedt een andere manier om actieve services in Linux weer te geven. Hoewel niet zo gedetailleerd als systemctl, kan het een snel overzicht geven van actieve processen, inclusief services.

Om alle actieve processen, inclusief services, weer te geven:

ps aux

Dit commando toont alle processen voor alle gebruikers in een gedetailleerd formaat. Om te filteren op specifieke services, kun je grep gebruiken:

ps aux | grep service_name

Voor een gefocuste weergave van services kun je gebruiken:

ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head

Dit commando toont het proces-ID, ouderproces-ID, commando, geheugengebruik en CPU-gebruik, gesorteerd op geheugengebruik.

Vergeleken met systemctl biedt ps:

  • Real-time procesinformatie
  • Meer gedetailleerde gegevens over resourcegebruik
  • De mogelijkheid om niet-systemd beheerde processen te zien

Het mist echter systemd-specifieke informatie zoals servicestatussen en afhankelijkheden.

Tip: Aangepaste PS Output

Je kunt de ps output aanpassen om alleen de informatie te tonen die je nodig hebt. Om bijvoorbeeld alleen de PID, commandonaam en geheugengebruik van processen weer te geven, gebruik je:

ps -eo pid,comm,%mem --sort=-%mem | head

Dit commando sorteert processen op geheugengebruik en toont de top 10 geheugen-consumerende processen.

Het Top Commando Gebruiken

Het commando top geeft een dynamische, real-time weergave van actieve processen, inclusief services. Om top te gebruiken:

top

Dit opent een interactieve weergave met:

  • Systeemoverzicht (uptime, gemiddelde belasting, CPU-gebruik)
  • Proceslijst (standaard gesorteerd op CPU-gebruik)

Om te focussen op services, kun je gebruiken:

top -c -p $(pgrep -d',' -f service_name)

Dit commando toont alleen de processen die gerelateerd zijn aan de opgegeven service.

Voordelen van het gebruik van top:

  • Real-time updates van systeem- en procesinformatie
  • Interactieve interface voor sorteren en filteren
  • Mogelijkheid om trends in resourcegebruik in de tijd te zien

Beperkingen zijn onder andere:

  • Minder service-specifieke informatie vergeleken met systemctl
  • Kan meer systeembronnen vereisen voor continue monitoring

Zowel ps als top vullen systemctl aan door verschillende weergaven te bieden van actieve services en processen, waardoor een beter begrip van systeemactiviteit mogelijk is.

Example: Apache Webserver Monitoren

Om de Apache webserver te monitoren met top, kun je gebruiken:

top -c -p $(pgrep -d',' -f apache2)

Dit commando toont real-time informatie over alle Apache processen, inclusief hun CPU- en geheugengebruik. Het is nuttig voor het bijhouden van Apache's resourceverbruik tijdens periodes met veel verkeer.