Cum să ucizi un proces sau să oprești un program în Linux

Când un proces se comportă necorespunzător, este posibil ca uneori să doriți să îl terminați sau să îl omorâți. În această postare, vom explora câteva modalități de a termina un proces sau o aplicație atât din linia de comandă, cât și dintr-o interfață grafică, folosind gedit ca exemplu de aplicație.

Utilizarea caracterelor de terminare din linia de comandă/terminare

Ctrl + C

Onava problemă invocând gedit din linia de comandă (dacă nu folosiți gedit &) este că nu va elibera promptul, astfel încât sesiunea shell este blocată. În astfel de cazuri, Ctrl+C (tasta Control în combinație cu „C”) vine la îndemână. Aceasta va încheia gedit și toată munca va fi pierdută (cu excepția cazului în care fișierul a fost salvat). Ctrl+C trimite semnalul SIGINT către gedit. Acesta este un semnal de oprire a cărui acțiune implicită este de a încheia procesul. Acesta instruiește shell-ul să oprească gedit și să se întoarcă la bucla principală, iar dumneavoastră veți primi din nou promptul.

$ gedit
^C

Ctrl + Z

Acesta se numește caracter de suspendare. Acesta trimite un semnal SIGTSTP către proces. Acesta este, de asemenea, un semnal de oprire, dar acțiunea implicită nu este de a ucide, ci de a suspenda procesul.

Acesta va opri (ucide/termina) gedit și va returna promptul shell-ului.

$ gedit
^Z
+ Stopped gedit
$

După ce procesul este suspendat (în acest caz, gedit), nu este posibil să se scrie sau să se facă ceva în gedit. În fundal, procesul devine un job. Acest lucru poate fi verificat cu ajutorul comenzii jobs.

$ jobs
+ Stopped gedit

jobs vă permite să controlați mai multe procese în cadrul unei singure sesiuni shell. Puteți opri, relua și muta lucrările în fundal sau în prim-plan, după cum este necesar.

Să reluăm gedit în fundal și să eliberăm un prompt pentru a rula alte comenzi. Puteți face acest lucru folosind comanda bg, urmată de ID-ul lucrării (observați din ieșirea lui jobs de mai sus. este ID-ul lucrării).

$ bg 1
+ gedit &

Acest lucru este similar cu pornirea gedit cu &,:

 $ gedit &

Utilizarea kill

kill permite un control fin asupra semnalelor, permițându-vă să semnalizați un proces prin specificarea fie a unui nume de semnal, fie a unui număr de semnal, urmat de un ID de proces, sau PID.

Ce-mi place la kill este că poate funcționa și cu ID-uri de lucrări. Să pornim gedit în fundal folosind gedit &. Presupunând că am un ID de loc de muncă de gedit de la comanda jobs, să trimitem SIGINT la gedit:

 $ kill -s SIGINT %1

Rețineți că ID-ul de loc de muncă trebuie să fie prefixat cu %, altfel kill îl va considera un PID.

kill poate funcționa fără a specifica un semnal în mod explicit. În acest caz, acțiunea implicită este de a trimite SIGTERM, care va încheia procesul. Executați kill -l pentru a lista toate numele semnalelor și utilizați comanda man kill pentru a citi pagina de manual.

Utilizarea killall

Dacă nu doriți să specificați un ID de lucru sau un PID, killall vă permite să specificați un proces după nume. Cel mai simplu mod de a termina gedit folosind killall este:

 $ killall gedit

Aceasta va ucide toate procesele cu numele gedit. Ca și kill, semnalul implicit este SIGTERM. Are opțiunea de a ignora cazul folosind -I:

$ gedit &
14852
$ killall -I GEDIT
+ Terminated gedit

Pentru a afla mai multe despre diversele stegulețe furnizate de killall (cum ar fi -u, care vă permite să omorâți procesele deținute de utilizator), consultați pagina de manual (man killall)

Utilizarea xkill

Ați întâlnit vreodată o problemă în care un player media, cum ar fi VLC, a apărut în gri sau s-a blocat? Acum puteți să găsiți PID-ul și să omorâți aplicația folosind una dintre comenzile enumerate mai sus sau să folosiți xkill.

xkill vă permite să omorâți o fereastră folosind un mouse. Pur și simplu executați xkill într-un terminal, ceea ce ar trebui să schimbe cursorul mouse-ului într-un x sau într-o pictogramă mică de craniu. Faceți clic pe x pe fereastra pe care doriți să o închideți. Aveți grijă la folosirea lui xkill, totuși – după cum explică pagina sa de manual, poate fi periculos. Ați fost avertizat!

Referiți-vă la pagina de manual a fiecărei comenzi pentru mai multe informații. De asemenea, puteți explora comenzi precum pkill și pgrep.

.

Lasă un răspuns

Adresa ta de email nu va fi publicată.