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
.
.