Cum de a ucide un proces din linia de comandă

interesat să afle mai multe despre administrarea Linux? Explorați aceste cursuri de instruire Linux.

  • Introducere în Linux (LFS101x) – gratuit
  • Essentials de administrare a sistemului Linux (Lfs201)

Aflați cum să-l omoare procese errant în acest tutorial din arhivele noastre.

Imaginați-vă acest lucru: ați lansat o aplicație (fie din meniul desktop preferat, fie din linia de comandă) și începeți să utilizați aplicația lansată, doar pentru a vă bloca, a opri performanța sau a muri în mod neașteptat. Încercați să rulați din nou aplicația, dar se pare că originalul nu se închide cu adevărat complet.

ce faci ? Tu omori procesul. Dar cum? Credeți sau nu, cel mai bun pariu se află cel mai adesea în linia de comandă. Din fericire, Linux are toate instrumentele necesare pentru a vă împuternici, utilizatorul, să ucideți un proces rătăcitor. Cu toate acestea, înainte de a lansa imediat acea comandă pentru a ucide procesul, trebuie mai întâi să știți care este procesul. Cum aveți grijă de această sarcină stratificată? Este de fapt destul de simplu…odată ce știi instrumentele la dispoziția dumneavoastră.

permiteți-mi să vă prezint instrumentele menționate.

pașii pe care îi voi schița vor funcționa pe aproape fiecare distribuție Linux, indiferent dacă este un desktop sau un server. Mă voi ocupa strict de linia de comandă, așa că deschideți terminalul și pregătiți-vă să tastați.

localizarea procesului

primul pas în uciderea procesului care nu răspunde este localizarea acestuia. Există două comenzi pe care le folosesc pentru a localiza un proces: top și ps. Top este un instrument pe care fiecare administrator ar trebui să îl cunoască. Cu top, veți obține o listă completă a procesului care rulează în prezent. Din linia de comandă, emiteți partea de sus pentru a vedea o listă a proceselor care rulează (Figura 1).

Figura 1: comanda de sus vă oferă o mulțime de informații.

Din această listă veți vedea câteva informații destul de importante. Spune, de exemplu, Chrome a devenit nu răspunde. Conform afișajului nostru de top, putem discerne că există patru cazuri de chrome care rulează cu ID-uri de proces (PID) 3827, 3919, 10764 și 11679. Aceste informații vor fi importante pentru a avea cu o anumită metodă de ucidere a procesului.deși top este incredibil de la îndemână, nu este întotdeauna cel mai eficient mijloc de a obține informațiile de care aveți nevoie. Să presupunem că știți că procesul Chrome este ceea ce aveți nevoie pentru a ucide și nu doriți să aruncați o privire prin informațiile în timp real oferite de top. Pentru aceasta, puteți utiliza comanda ps și puteți filtra ieșirea prin grep. Comanda ps raportează un instantaneu al unui proces curent și grep imprimă linii care se potrivesc unui model. Motivul pentru care filtrăm ps prin grep este simplu: Dacă emiteți comanda ps de la sine, veți obține o listă instantanee a tuturor proceselor curente. Vrem doar listarea asociată cu Chrome. Deci, această comandă ar arăta astfel:

ps aux | grep chrome

opțiunile aux sunt următoarele:

  • a = afișați procesele pentru toți utilizatorii

  • u = afișați utilizatorul/proprietarul procesului

  • x = afișați și procesele care nu sunt atașate la un terminal

opțiunea X este importantă atunci când căutați informații cu privire la o aplicație grafică.

când emiteți comanda de mai sus, vi se vor oferi mai multe informații decât aveți nevoie (Figura 2) pentru uciderea unui proces, dar uneori este mai eficient decât utilizarea top.

Figura 2: localizarea informațiilor necesare cu comanda ps.

uciderea procesului

acum ajungem la sarcina de a ucide procesul. Avem două informații care ne vor ajuta să ucidem procesul rătăcitor:

  • numele procesului

  • ID-ul procesului

pe care îl utilizați va determina comanda utilizată pentru terminare. Există două comenzi folosite pentru a ucide un proces:

  • kill – Kill A proces by ID

  • killall – Kill a proces by name

există, de asemenea, semnale diferite care pot fi trimise către ambele comenzi kill. Ce semnal trimiteți va fi determinat de ce rezultate doriți de la comanda kill. De exemplu, puteți trimite semnalul HUP (închide) la comanda kill, care va reporni efectiv procesul. Aceasta este întotdeauna o alegere înțeleaptă atunci când aveți nevoie ca procesul să repornească imediat (cum ar fi în cazul unui demon). Puteți obține o listă cu toate semnalele care pot fi trimise la comanda kill prin emiterea kill-l. veți găsi un număr destul de mare de semnale (Figura 3).

Figura 3: semnalele de ucidere disponibile.

cele mai frecvente semnale de ucidere sunt:

Signal Name

Single Value

Effect

SIGHUP

Hangup

SIGINT

Interrupt from keyboard

SIGKILL

Kill signal

SIGTERM

Termination signal

SIGSTOP

17, 19, 23

Stop the process

Ce este frumos despre acest lucru este că puteți utiliza valoarea semnalului în locul numelui semnalului. Deci, nu trebuie să memoreze toate numele diferitelor semnale.
deci, să folosim acum comanda kill pentru a ucide instanța noastră de chrome. Structura pentru această comandă ar fi:

kill SIGNAL PID

unde semnalul este semnalul care trebuie trimis și PID este ID-ul procesului care trebuie ucis. Știm deja, din comanda noastră ps că ID-urile pe care vrem să le ucidem sunt 3827, 3919, 10764 și 11679. Deci, pentru a trimite semnalul ucide, ne-ar emite comenzile:

kill -9 3827kill -9 3919kill -9 10764kill -9 11679

odată ce am emis comenzile de mai sus, toate procesele chrome vor fi fost ucise cu succes.

să luăm calea ușoară! Dacă știm deja că procesul pe care vrem să-l ucidem se numește chrome, putem folosi comanda killall și putem trimite același semnal procesului astfel:

killall -9 chrome

singura avertizare la comanda de mai sus este că este posibil să nu prindă toate procesele chrome care rulează. Dacă, după rularea comenzii de mai sus, emiteți comanda PS aux|grep chrome și vedeți procesele rămase în desfășurare, cel mai bun pariu este să reveniți la comanda kill și să trimiteți semnalul 9 pentru a termina procesul prin PID.

terminarea proceselor ușor de făcut

după cum puteți vedea, uciderea proceselor errant nu este aproape la fel de provocatoare cum ați fi crezut. Când ajung la un proces încăpățânat, tind să încep cu comanda killall, deoarece este cea mai eficientă cale de terminare. Cu toate acestea, atunci când încheiați cu un proces cu adevărat feisty, comanda kill este calea de urmat.

Aflați mai multe despre Linux prin cursul gratuit „Introducere în Linux” de la Linux Foundation și edX.

Related Posts

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *