Cum să listați serviciile Linux cu systemctl

Publicat: 2022-10-23
Laptop Linux afișează un prompt bash
fatmawati achmad zaenuri/Shutterstock.com
Pentru a vedea toate serviciile care rulează pe un sistem Linux cu systemd, utilizați comanda „systemctl --type=service --state=running”. Aceasta vă va afișa numele, încărcarea, sub-starea și descrierea fiecărui serviciu activ. De asemenea, puteți modifica valoarea stării pentru a vedea serviciile care sunt moarte, părăsite, eșuate sau inactive.

Computerul dumneavoastră Linux se bazează pe o mulțime de sarcini de fundal numite servicii sau demoni. Pe distribuțiile bazate pe systemd aveți comenzi încorporate care vă permit să vedeți ce servicii rulează, sunt dezactivate sau au eșuat.

Servicii și Daemons

Serviciile și demonii sunt sarcini de fundal care rulează fără o interfață cu utilizatorul, nu necesită interacțiune umană și sunt de obicei pornite pe măsură ce computerul pornește.

La un moment dat, serviciile au fost lansate de init , care a fost primul proces care a fost lansat. Detaliile serviciilor au fost păstrate într-o colecție de scripturi aflată în directorul „/etc/init/d”. Pe distribuțiile non-systemd, acesta este încă cazul.

În lumea systemd, serviciile sunt lansate de systemd , care este acum primul proces care este lansat. Detaliile serviciilor sunt stocate în fișierele unitare situate în directorul „/usr/lib/systemd”.

Conform paginii sale de manual, systemd este un manager de sistem și servicii. Puteți utiliza comanda systemctl pentru a inspecta și controla diferite aspecte ale sistemului systemd, inclusiv servicii și demoni.

Deoarece aici ne uităm la comenzi specifice systemd, primul lucru pe care trebuie să-l știți este dacă rulați o distribuție bazată pe systemd sau nu.

LEGATE: De ce sistemul Linux este încă divizor după toți acești ani

init sau pe bază de sistem?

Marea majoritate a distribuțiilor Linux utilizează systemd, inclusiv Arch, Red Hat și Debian și multe dintre distribuțiile derivate din acestea. Aceasta include familia de distribuții Ubuntu, Fedora și învârtirile sale și Manjaro și celelalte distribuții bazate pe Arch.

Cu toate acestea, există variante sau variante ale unora dintre aceste distribuții care au fost create special pentru a evita utilizarea systemd. Nu numai asta, dar există și alte sisteme init pe care cineva le-ar putea alege să le folosească în locul celui care a venit implicit în distribuția lor, cum ar fi runit sau s6-linux-init.

Cum să rulați un program Linux la pornire cu systemd
LEGATE Cum să rulați un program Linux la pornire cu systemd

Dacă trebuie să administrați un computer Linux pe care nu l-ați configurat singur, singura modalitate de a fi sigur dacă folosește sau nu systemd este să verificați. Putem face asta uitându-ne la arborele de proces cu comanda pstree . Trebuie doar să vedem partea de sus a arborelui – căutăm primul proces care rulează, până la urmă – așa că vom transmite rezultatul prin comanda head și vom cere primele cinci intrări.

 pstree | cap -5 

Folosind pstree pipeted through head pentru a determina dacă o instalare Linux utilizează systemd

Putem vedea că systemd este primul proces care este rulat după pornire, așa că suntem cu siguranță la o instalare bazată pe systemd a Linux.

LEGATE: Cum să gestionați procesele de la terminalul Linux: 10 comenzi pe care trebuie să le cunoașteți

Utilizarea systemctl pentru a lista serviciile

Comanda pentru listarea serviciilor și a demonilor este systemctl . Putem rafina comanda systemctl cu opțiunile de type și state . Solicităm systemctl să raporteze serviciile care sunt în stare de funcționare.

 systemctl --type=service --state=running 

Utilizarea systemctl pentru a lista serviciile care rulează

Se generează un tabel de informații. Dacă este prea lat sau lung pentru fereastra terminalului, acesta este afișat în vizualizatorul implicit de fișiere, ceea ce probabil va fi less .

Ieșirea dintr-un apel systemctl afișată în vizualizatorul de fișiere mai puține

Pentru a vedea capătul din dreapta al tabelului, apăsați tasta Săgeată dreapta. Pentru a reveni la vizualizarea obișnuită, apăsați tasta săgeată la stânga.

Secțiunea din dreapta a ieșirii dintr-un apel systemctl afișată în vizualizatorul de fișiere mai puține

Apăsați tasta Q pentru a ieși din mai puțin. Coloanele care sunt afișate sunt:

  • Unitate : numele serviciului sau al demonului. Coloana este intitulată „Unitate” deoarece orice se află în această coloană a fost lansat folosind un sistem de informații systemd într-un fișier unitar.
  • Load : starea de încărcare a serviciului sau a demonului. Poate fi încărcat, negăsit, cu setare proastă, eroare sau mascat.
  • Activ : starea generală în care se află serviciul sau demonul. Poate fi activ, reîncărcat, inactiv, eșuat, activare sau dezactivare.
  • SUB : starea secundară a serviciului sau a demonului. Poate fi mort, ieșit, eșuat, inactiv sau în funcțiune.
  • Descriere : O scurtă descriere a unității.

Putem canaliza ieșirea systemctl prin grep dacă vrem să ne concentrăm pe un singur serviciu. Această comandă izolează intrarea tabelului pentru serviciul ssh .

 systemctl --type=service --state=running | grep ssh 

Folosind grep pentru a izola un singur serviciu de rezultate

Până acum, am filtrat conținutul tabelului furnizând opțiunea state=running . Putem folosi în schimb oricare dintre valorile posibile ale substarii: mort, ieșit, eșuat, inactiv sau în funcțiune.

Să căutăm serviciile eșuate:

 systemctl --type=service --state=eșuat 

Raportarea serviciilor eșuate cu systemctl

Se pot folosi combinații de sub-stări. Introduceți-le ca o listă separată prin virgulă. Asigurați-vă că nu includeți niciun spațiu alb între opțiuni. Rețineți că aceasta găsește servicii care se potrivesc cu oricare dintre state.

 systemctl --type=service --state=failed,exit 

Se caută servicii care fie au eșuat, fie au ieșit cu systemctl

Apăsarea tastei săgeată la dreapta pentru a privi coloanele din afara ecranului arată că avem un amestec de servicii părăsite și eșuate în listă.

Un amestec de servicii eșuate și părăsite găsite de systemctl

În mod implicit, systemctl listează procesele — servicii și demoni — care au fost lansate de systemd deoarece systemd a găsit un fișier unitar care conținea un fișier unitar valid pentru ele. De aceea, termenul scurt pentru toate aceste procese este „unități”.

Există o opțiune de a solicita în mod explicit systemctl pentru a lista unitățile, dar deoarece este acțiunea implicită, nu este adesea folosită.

Aceste comenzi produc aceleași rezultate.

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

Utilizarea systemctl pentru a lista fișierele unitare

Putem extinde domeniul de aplicare al comenzii systemctl prin includerea opțiunii list-unit-files . Acesta nu raportează doar serviciile și demonii care au fost lansate, ci listează și toate fișierele unității instalate pe computer.

 systemctl list-unit-files --state=activat 

Listarea fișierelor de unitate cu systemctl

Este afișat un tabel colorat.

O listă de fișiere unitare generate de systemctl, afișată în browserul de fișiere less

Eliminarea opțiunii de state elimină filtrarea. Ieșirea va conține toate fișierele de unitate instalate, indiferent de starea acestora.

 systemctl list-unit-files 

Folosind systemctl pentru a lista fișierele unitare fără filtrare

Ieșirea va conține mult mai multe intrări decât rezultatele de la comenzile anterioare.

Toate fișierele unitare listate de systemctl și afișate în browserul de fișiere less

Pe computerul nostru de testare, lista de rezultate este de aproape patru ori mai lungă decât rezultatul comenzilor noastre anterioare.

Dacă doriți să utilizați opțiunea de state , puteți utiliza mai multe stări cu ea, așa cum am văzut mai devreme. Se aplică aceleași reguli. Furnizați opțiunile ca valori separate prin virgulă și nu includeți niciun spațiu alb.

Această comandă va lista toate fișierele unității care sunt fie dezactivate, fie lansate eșuate.

 systemctl list-unit-files --state=enabled,failed 

Folosind systemctl pentru a căuta fișiere de unitate care se potrivesc cu oricare dintre cele două stări

Este afișat un număr redus de rezultate, filtrate în funcție de selecțiile pe care le-ați făcut cu opțiunea de stare.

Un amestec de fișiere de unitate dezactivate și eșuate găsite de systemctl

Privind un serviciu în detaliu

Dacă ceva despre un serviciu sau un demon vă stârnește interesul și merită o scufundare mai profundă, îl puteți privi în detaliu folosind opțiunea de stare systemctl.

Să aruncăm o privire la demonul SSH, sshd. Tot ce trebuie să facem este să folosim opțiunea de stare și numele serviciului sau demonului.

 systemctl status sshd 

Detaliile unui singur serviciu afișate de systemctl

Acest afișaj compact arată:

  • Numele serviciului împreună cu o scurtă descriere. Un punct codificat cu culori arată dacă rulează sau nu. Verde înseamnă că funcționează, roșu înseamnă că nu.
  • Ce a fost încărcat, inclusiv calea către fișierul unitate.
  • Cât timp rulează.
  • Unde man află documentația în manualul de utilizare.
  • ID-ul de proces al instanței care rulează.
  • Câte instanțe simultane ale acestui serviciu rulează. De obicei, acesta va fi unul.
  • Câtă memorie se consumă.
  • Cât timp CPU a fost consumat.
  • Grupul de control din care face parte serviciul.

Sunt afișate și intrările relevante din jurnalul de sistem. Acestea sunt de obicei evenimente precum pornirea serviciului. Acestea pot fi informative dacă căutați un serviciu sau un demon care nu s-a lansat corect.

LEGATE: Cum să utilizați journalctl pentru a citi jurnalele de sistem Linux

Sistemele autonome

Serviciile și demonii oferă multe dintre acțiunile automate ale sistemului dvs. de operare, deci sunt vitale. Asta înseamnă că și sănătatea lor este vitală.

Obținerea unei vizualizări a serviciilor, a demonilor și a fișierelor de unitate este ușoară și informativă. Este, de asemenea, un pas valoros de depanare dacă un serviciu sau un demon refuză să pornească.

RELATE: Cum să rezolvi eroarea „Prea multe fișiere deschise” pe Linux