Cum să listați serviciile Linux cu systemctl
Publicat: 2022-10-23Computerul 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.
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
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
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
.
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.
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
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
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
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ă.
Î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
Este afișat un tabel colorat.
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
Ieșirea va conține mult mai multe intrări decât rezultatele de la comenzile anterioare.
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
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.
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
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