03/29/2024

Cum să omorâți un proces în Linux

Cu toții am avut acele zile în care computerul nostru funcționează excepțional de lent și se bâlbâie în îndeplinirea chiar și a sarcinilor de bază. În Windows, aveți doar Windows Task Manager pentru a inspecta și a ucide procesele care nu sunt atât de importante, dar care consumă cantități enorme de memorie. Cu toate acestea, în Linux, aveți un întreg arsenal de comenzi și instrumente GUI pentru a gestiona aceste sarcini. În acest articol, vom arăta câteva metode ușoare de linie de comandă (CLI), precum și metode GUI pentru cum să omorâți un proces în Linux.

Încheierea procesului în Linux (2023)

Dar înainte de a ne scufunda în lumea managementului proceselor în Linux, să înțelegem ce este exact un proces și ce este un ID de proces în sistemele Linux.

Ce sunt procesele în Linux

În Linux, fiecare instanță care rulează în prezent a unui program este cunoscută ca „proces”, în timp ce fiecare fișier executabil este cunoscut ca program. Când se execută orice program, se creează un proces și fiecărui proces i se atribuie un număr unic de identificare din 5 cifre cunoscut sub numele de „ID de proces”. Când un proces s-a terminat de execuție sau este încheiat forțat, ID-ul său de proces este atribuit următorului proces din linie.

Ucideți procesul prin linia de comandă în Linux

Deși utilizarea terminalului poate părea uneori intimidantă în comparație cu utilizarea instrumentelor GUI pentru sarcini de bază, gestionarea diferitelor procese devine mult mai ușoară odată ce înțelegeți comenzile și diferitele opțiuni ale acestora.

Semnale de terminare

Când încercați să omorâți un proces fie din GUI, fie din CLI în Linux, nucleul trimite procesului un semnal de terminare. Procesul acționează în consecință, în funcție de semnalul primit. Fiecărui dintre aceste semnale i se atribuie un număr specific pentru ca programul să fie înțeles rapid. Există numeroase tipuri de semnale de terminare, dar le-am explicat aici doar pe cele esențiale:

SignalNumeric ValueDescriptionSIGHUP1Signal pentru „Signal Hangup”
Este trimis când terminalul este închis.
Este trimis atunci când utilizatorul încheie procesul. SIGKILL9 înseamnă „Signal Kill”
Este trimis atunci când trebuie să părăsiți imediat un proces. SIGTERM15 înseamnă „Signal Termination”
Este trimis atunci când trebuie să încheiați un proces și să eliberați resursele consumateSIGSTOP19 – pentru ARM, x86
17 – pentru ALPHA
23 – pentru MIPS
24 – pentru PA-RISCIt înseamnă „Semnal Stop”
Este trimis atunci când trebuie să întrerupeți un proces și să îl reluați mai târziu. Cele mai frecvent utilizate semnale sunt SIGKILL (9) și SIGTERM (15).

  5 exemple de script Bash pentru a vă ajuta să învățați programarea Linux

Identificați ID-urile de proces

Înainte de a încheia un proces, trebuie să cunoașteți câteva detalii ale procesului, cum ar fi ID-ul procesului, timpul de rulare etc. Pentru a cunoaște detaliile unui proces, utilizați comanda ps:

ps

Cu comanda ps, trebuie să căutați procesul derulând și notând numele acestuia, ceea ce ar putea fi greoi. În schimb, puteți folosi chiar și comanda grep cu comanda ps într-o conductă, așa cum se arată mai jos:

ps | grep

Pentru a simplifica lucrurile, există o comandă separată care arată doar ID-ul procesului al oricărui proces care rulează pe care trebuie să-l cunoașteți. Sintaxa pentru a utiliza comanda pidof este:

pidof

Terminați procesul folosind comanda kill

Odată ce ați notat ID-ul procesului pe care doriți să-l terminați, cea mai comună comandă folosită pentru a încheia programe pe sistemul dumneavoastră Linux este comanda kill. Sintaxa pentru a utiliza comanda kill este:

kill

Parametrul este opțional și comanda kill trimite implicit semnalul SIGTERM (15). Puteți trimite orice alt semnal după valoarea sa numerică sau numele semnalului real din tabelul de mai sus.

Terminați procesul folosind comanda pkill

Dacă simțiți că căutarea ID-ului de proces este incomod, puteți utiliza comanda pkill. Caută procesele care se potrivesc cu un model și apoi îl oprește. Sintaxa pentru a utiliza comanda pkill este:

pkill

Unele dintre opțiunile comune de asociere cu comanda pkill sunt:

OptionDescription-nSelectează numai cele mai recente procese care se potrivesc cu id-ul de proces-uSelectează procesele deținute de un anumit utilizator-xSelectează procesele care se potrivesc exact cu modelul

Acest lucru este deosebit de important atunci când mai mulți utilizatori lucrează la instanțe diferite ale aceluiași program în același sistem și una dintre instanțe începe să aibă un comportament neașteptat. De exemplu, în captura de ecran de mai jos, omorâm instanța „gedit” deținută de utilizatorul „intel” folosind comanda pkill în Linux:

pkill -u intel gedit

Terminați procesul folosind comanda killall

Comanda killall funcționează similar cu comanda kill, dar oprește toate procesele care se potrivesc cu numele procesului, indiferent de utilizator. În mod implicit, trimite semnalul SIGTERM dacă nu este specificat altfel. Un lucru interesant de remarcat este că comanda killall nu se poate sinucide niciodată, dar poate termina alte instanțe ale comenzii killall. Sintaxa pentru a utiliza comanda killall este:

killall

Unele dintre opțiunile de asociere cu comanda killall sunt:

OptionDescription-rInterpretează numele_procesului ca un model regex și apoi oprește procesele care se potrivesc cu modelul – ucide procesul specificat deținut de un proprietar specificat. -o Omoara procesele specificate mai vechi (începute înainte) decât o anumită oră. -y Omoara procesele specificate mai tinere ( început după) timpul specific.

Comanda killall poate fi utilă pentru a termina o serie a aceluiași proces sau chiar toate procesele deținute de un anumit proprietar. Aici, în exemplul nostru, omorâm toate procesele de „dormire timp de 500 de secunde” folosind comanda killall în Linux:

  Cum să găzduiești un server TeamSpeak pe Linux

killall -v somn

Opriți procesul Linux folosind comanda top/htop

Această metodă de ucidere a proceselor este utilă atunci când nu aveți nicio idee care procese consumă resurse maxime. În ambele comenzi, puteți naviga prin toate procesele care rulează sau chiar prin procesele zombie și le puteți încheia rapid. Pentru a utiliza comanda de sus pentru a vă monitoriza resursele, utilizați sintaxa din Terminal:

top

Înțelegerea rezultatului:

Ieșirea principală a comenzii de sus este împărțită în coloane care sunt:

  • PID – arată ID-ul procesului în curs de desfășurare
  • Utilizator – arată proprietarul procesului
  • PR – arată valoarea de prioritate a procesului care este atribuită de sistemul de operare
  • NI – afișează valorile frumoase, care sunt ca și cum ar fi atribuirea unor valori distanțate de utilizator pentru a controla manual prioritatea unei sarcini.
  • VIRT – arată cantitatea de memorie virtuală utilizată de proces.
  • RES – arată cantitatea de memorie fizică utilizată de proces
  • SHR – arată cantitatea de memorie partajată de alte procese
  • S – arată starea curentă a procesului care poate fi:
    • D – somn neîntrerupt
    • R – alergare
    • S – dormit
    • T – oprit
    • Z – zombie
  • %CPU – arată cantitatea de CPU utilizată de proces în procente
  • %MEM – arată cantitatea de RAM utilizată de proces în procente
  • TIME+ – Afișează durata totală de rulare a procesului
  • Comandă – Arată ce comandă a fost invocată pentru proces.
  • Dacă nu cunoașteți ID-ul procesului al sarcinii pe care doriți să o omorâți, fie navigați prin listă folosind tastele săgeți, fie căutați numele procesului în tabelul de procese în Linux.

    Pentru a căuta numele procesului, apăsați „L” de pe tastatură și introduceți numele procesului pe care doriți să îl căutați. Odată ce găsiți procesul nefast, apăsați „k” de pe tastatură pentru a opri procesul. Acum, introduceți ID-ul procesului sau lăsați-l la procesul evidențiat în prezent și apăsați „ENTER”. Apoi, introduceți semnalul de terminare și apoi apăsați „ENTER” pentru a opri programul. Pentru a reveni la terminal, apăsați „q” de pe tastatură.

    Deși comanda de sus arată detalii precum ID-ul procesului, consumul de memorie și multe altele pentru toate procesele care rulează, nu este potrivită pentru începători, deoarece nu arată nicio mapare a tastelor sau cum să o folosească. Pe de altă parte, comanda htop are o interfață mai ușor de utilizat, chiar și pentru un instrument de linie de comandă. În plus, arată toate detaliile într-o vizualizare separată, prin urmare, nu aglomera fereastra terminalului. Nu este preinstalat în majoritatea distribuțiilor și trebuie să utilizați următoarea comandă pentru a instala htop în Linux:

    sudo apt install -y htop

    Pentru a utiliza htop pentru a gestiona procesele în Linux, utilizați comanda de mai jos:

      Cum să ajungeți printre noi pe Linux

    htop

    Pentru a opri un program, navigați la numele procesului pe care doriți să îl încheiați, apăsați „F9” și apoi apăsați Enter. Dacă trebuie să căutați și să omorâți orice program, apăsați „F3” de pe tastatură, introduceți numele și apăsați Enter. Numele procesului va fi evidențiat, apăsați F9 și apoi apăsați Enter de pe tastatură pentru a încheia procesul.

    Omorâți un proces prin System Monitor în Linux

    Dacă simțiți că metoda liniei de comandă este dificilă pentru dvs., puteți utiliza instrumentul de monitorizare a sistemului încorporat, care este disponibil pe fiecare distribuție Linux. Pentru a afla cum funcționează, deschideți instrumentul de monitorizare a sistemului din meniul Aplicații și urmați pașii de mai jos.

    1. Odată ce instrumentul de monitorizare a sistemului se deschide, veți vedea trei file în partea de sus numite — Procese, Resurse și Sistem de fișiere. Pentru a vă gestiona procesele, mergeți la fila „Procese”. Aici veți vedea toate procesele care rulează în prezent. Apăsați „CTRL+F” pentru a căuta un nume de proces. Faceți clic pe numele procesului pe care doriți să-l încheiați și faceți clic pe „Încheierea procesului”.

    2. Apoi, veți primi o solicitare de confirmare dacă doriți să încheiați procesul sau nu. Continuați și faceți clic pe butonul roșu mare „Încheierea procesului” pentru a opri procesul în Linux.

    întrebări frecvente

    Cum opresc toate procesele în Linux?

    Dacă trebuie să opriți toate procesele (cu excepția shell-ului de conectare, a init și a proceselor specifice nucleului) pentru un anumit utilizator în Linux, utilizați fie comanda pkill, fie comanda killall conform sintaxei:

    pkill -u

    killall -u

    Dacă trebuie să omorâți fiecare proces pentru fiecare utilizator, inclusiv sistemul init, apăsați tastele „ALT + Prt Sc + o” de pe tastatură.

    Este în regulă să închei un proces?

    Când închideți orice proces de fundal neesențial sau un proces de utilizator care consumă multă memorie de sistem, eliberați resursele care acum pot fi utilizate de alte procese. Dar, înainte de a închide orice proces, asigurați-vă că nu ucideți un proces esențial al sistemului de operare.

    Care sunt procesele de fundal în Linux?

    În Linux, procesele de fundal sunt procese care pot rula fără instanța shell sau orice intervenție a utilizatorului. Ele pot fi vizualizate folosind oricare dintre comenzi – top, htop, ps etc.

    Ce este un proces zombi?

    Un proces care a fost ucis de utilizator, dar încă ocupă memorie este cunoscut ca proces zombie.

    Ce face CTRL + Z în Linux?

    Când utilizați CTRL + Z în Linux, acesta trimite semnalul SIGTSTP care suspendă procesul și îl trimite în fundal. Când un proces se află într-o stare suspendată în fundal, nu puteți opri procesul până când nu este readus în prim-plan.

    Omorâți procesele în Linux cu ușurință

    Uciderea proceselor de acumulare a memoriei este o sarcină crucială pe care fiecare utilizator ar trebui să o învețe. În acest articol, am arătat atât metoda liniei de comandă, inclusiv comenzi precum killall și pkill, cât și metodele GUI pentru a ucide procesele în Linux. Am detaliat chiar și cum să folosiți instrumente populare, cum ar fi top și htop, pentru a gestiona procesele pe computerul dvs. Linux. Dacă întâmpinați probleme în timp ce utilizați aceste instrumente pentru a opri un proces, anunțați-ne în comentariile de mai jos.