Cum să omorâți procesul după nume în Linux

Forțați să renunțați la procesele care se comportă greșit folosind aceste comenzi Linux

Pentru a explica sensul unui „Proces” în cele mai simple cuvinte este că este o instanță care rulează a oricărei aplicații sau program de pe sistemul dumneavoastră. Este posibil să rulați mai multe aplicații simultan, cum ar fi navigarea, ascultarea muzicii care funcționează pe terminalul dvs. etc. Există multe procese de fundal asociate cu aceste aplicații care sunt rulate de utilizator.

Fiecare aplicație sau program care rulează pe sistemul dvs. creează mai multe procese asociate cu o singură aplicație. Uneori, aceasta poate fi o problemă și a scăpa de aceste procese este singura opțiune pe care o aveți.

„Uciderea” unui proces este o opțiune utilă pe care Linux vă oferă pentru a opri procesele în desfășurare, fie că este vorba de un proces din prim-plan sau de un proces de fundal. În acest articol, vom revizui comenzile precum ucide, pkill și omoara-i pe toti pentru a forța oprirea oricărui proces dintr-un sistem.

De ce să ucizi un proces?

Înțelegerea conceptului de ucidere a unui proces este importantă înainte de a continua în acest tutorial. Uciderea poate părea o modalitate foarte brutală de a exprima conceptul, dar ceea ce înseamnă la figurat este avortarea forțată a unui proces.

Acum, de ce să anulați sau să părăsiți un proces în desfășurare? Atunci când mai multe procese rulează în fundal, toate sau câteva dintre ele pot funcționa defectuos și pot cauza funcționarea necorespunzătoare a sistemului. Acest lucru vă întârzie sarcinile în curs, deoarece procesul de funcționare defectuoasă vă poate îngheța sistemul pentru o perioadă.

Uneori, renunțarea la toate procesele care nu se comportă greșit pare să fie singura opțiune pentru a restabili normalitatea sistemului dumneavoastră. Linux vă permite să opriți un proces folosind pid sau numele procesului.

Folosind pgrep comanda

Majoritatea utilizatorilor Linux sunt familiarizați cu grep comanda. The pgrep comanda poate fi folosită pe linii similare ale grep.

pgrep comanda când este utilizată, afișează pid a procesului care rulează așa cum este specificat în comandă. Această comandă se va dovedi foarte utilă în timpul utilizării pkill comanda.

Sintaxa generala:

pgrep [opțiuni] [model]

Opțiuni importante disponibile cu pgrep comanda

OpțiuneDescriere
-uID-ul procesului de listă deținut de un anumit utilizator
-cnumără numărul de procese de potrivire
-Euenumerați numai numele proceselor
-Alistează calea completă a numelui procesului

Să demonstrăm utilizarea lui pgrep comanda folosind un exemplu.

pgrep -u gaurav gnome

Aici, dorim să vedem piduri al procesului gnome care este deținut de utilizatorul „gaurav”. Opțiune -u vă permite să enumerați piduri a proceselor deținute de un anumit utilizator. În acest caz, utilizatorul gaurav.

Ieșire:

gaurav@ubuntu:~$ pgrep -u gaurav gnome 1752 1755 1909 1922 2021 2576 4279 gaurav@ubuntu:~$

Pe măsură ce avansăm cu acest tutorial, pgrep comanda ne va ajuta să confirmăm dacă procesul a fost oprit sau dacă încă rulează.

Să trecem acum la pkill comanda si executarea acesteia.

Folosind pkill comanda

Puteți folosi pkill comandă în Linux pentru a opri procesul folosind numele procesului. Chiar dacă nu cunoști pid a unui proces, chiar și atunci poți să omorâți acel anumit proces folosind pkill comanda.

Procesele pot fi specificate cu numele lor complet sau cu numele parțial în timpul utilizării pkill comanda. Chiar dacă introduceți numele parțial al procesului, fișierul pkill comanda va potrivi toate procesele care rulează cu numele potrivit pe care l-ați introdus în comandă.

Sintaxă:

pkill [opțiuni][process_name_pattern] 

Exemplu:

Să arătăm procesele care rulează în prezent folosind top comanda. De asemenea, puteți utiliza ps comanda pentru a lista procesele.

top
sus - 14:24:02 până la 3:12, 1 utilizator, încărcare medie: 0,29, 0,48, 0,58 Sarcini: 221 în total, 1 în funcțiune, 172 în somn, 0 oprit, 1 %Cpu(e) zombie: 5,6 us, 1,0 sy , 0.0 ni, 92.9 id, 0.4 wa, 0.0 hi, 0.1 si, 0.0 st KiB Mem : 3928240 total, 610456 gratuit, 2233152 folosit, 1084632 buff/cache KiB Swap: 408344787, total folosit, 3834478787. 1187268 folos Mem PID USER PR NI Virt RES SHR S% CPU% MEM TIME + COMANDĂ 4077 Gaurav 20 0 3312128 673480 118360 S 19.6 17.1 15: 13.23 Conținut Web 3712 Gaurav 20 0 3953008 453544 116476 S 4,0 11,5 9: 28.39 MainThread 2010 Gaurav 20 0 4084232 111096 45024 S 1.7 2.8 3: 14,85 gnome-shell 1197 rădăcină 20 0 1039612 33704 22988 S 1,0 0,9 3: 04.42 Xorg 1426 couchdb 20 0 3772396 16908 2520 S 0,7 0,4 1: 50.83 beam.smp 3288 gaurav 20 0 722480 25048 18272 S 0.7 0.6 0: 06.84 gnome-3915 gaurav borne 20 0 2804900 231524 111228 S 0.7 5.9 0: 54.42 Conținut Web 4146 gaurav 20 0 3017924 245304 120604 S 0,7 6,2 2: 01.21 Conținut Web 4417 gaurav 20 0 2964208 234396 119160 S 0,7 6,0 0 :59.90 Web Content 4860 gaurav 20 0 3066800 372920 132544 S 0.7 9.5 0:48.20 Web Content 16007 gaurav 20 0 41944 3780 3116 R 0.7: 0.08 top. 

Folosind top comanda va afișa mai multe procese pe terminalul dvs. Să încercăm să afișăm procesul cu un anumit nume. Vom folosi grep comandă pentru a afișa un proces al cărui nume se potrivește cu șirul „mongo”.

sus | grep -i mongo

Notă: Aici, am folosit opțiunea -i pentru a face căutarea fără majuscule și minuscule.

Ieșirea acestei comenzi va afișa procesele care se potrivesc cu numele „mongo”

 1158 MongoDB 20 0 288564 4848 1320 S 0,7 0,1 1: 03.22 mongod 1158 MongoDB 20 0 288564 4848 1320 S 1,0 0,1 1: 03.25 mongod 1158 MongoDB 20 0 288564 4848 1320 S 0,7 0,1 1: 03.27 mongod 1158 MongoDB 20 0 288564 4848 1320 S 0.7 0.1 1: 03.29 mongod 1158 MongoDB 20 0 288564 4848 1320 S 0,7 0,1 1: 03.31 mongod 1158 MongoDB 20 0 288564 4848 1320 S 0,7 0,1 1: 03.33 mongod 1158 MongoDB 20 0 288564 4848 1320 S 1,0 0,1 1: 03.36 mongod 1158 MongoDB 20 0 288564 4848 1320 S 0,7 0,1 1: 03.38 mongod 1158 MongoDB 20 0 288564 4848 1320 S 0,7 0,1 1: 03.40 mongod 1158 MongoDB 20 0 288564 4848 1320 S 1,0 0,1 1: 03.43 mongod 1158 MongoDB 20 0 288564 4848 1320 S 0.7 0.1 1: 03.45 mongod 1158 MongoDB 20 0 288564 4848 1320 S 1,0 0,1 1: 03.48 mongod 1158 MongoDB 20 0 288564 4848 1320 S 0,3 0,1 1: 03.49 mongod 1158 MongoDB 20 0 288564 4848 1320 S 1,0 0,1 1: 03.52 mongod 1158 MongoDB 20 0 288564 4848 1320 S 0,7 0,1 1:03,54 mongod 1158 mongodb 20 0 288564 4848 1320 S 1,0 0,1 1:03,57 mongod

Acum, vom folosi pkill comanda pentru a ucide procesul numit „mongo”.

pkill mongo

Această comandă va ucide acum procesul mongo. Putem confirma dacă procesul a fost forțat să se închidă utilizând pgrep comanda care afișează pid a procesului de rulare conform criteriilor specificate de utilizator.

gaurav@ubuntu:~$ pgrep mongo gaurav@ubuntu:~$

Această comandă nu va returna nicio valoare. Acest lucru confirmă că procesul „mongo” este acum ucis folosind pkill comanda.

Opțiuni utilizate frecvent cu pkill comanda

În timp ce utilizați pkill comanda vom avea nevoie de opțiunile menționate pentru utilizarea corectă și fără efort a pkill comanda.

OpțiuniDescriere
-fpotrivire cu argumente complete, inclusiv spații, ghilimele, caractere speciale
-upentru a informa procesul pkill să se potrivească cu procesul rulat de utilizatorul specificat
-1reîncarcă procesul
-9ucide procesul
-15avortează cu grație un proces

Să mai vedem un exemplu de pkill comanda folosind -f opțiune.

Există două comenzi care se execută în prezent pe terminal, așa cum se arată mai jos.

ping bbc.com ping youtube.com

Ambele procese sunt inițiate de ping comanda. Acum, să presupunem că dorim să încheiem un singur proces „ping youtube.com”, apoi trebuie să folosim -f opțiunea cu pkill comandă care oprește un proces cu un nume specific, inclusiv spațiile și ghilimelele din numele procesului.

Comanda:

gaurav@ubuntu:~$ pkill -f "ping youtube.com" gaurav@ubuntu:~$ 

Rezultat:

gaurav@ubuntu:~$ ping youtube.com PING youtube.com (142.250.67.206) 56(84) octeți de date. 64 de octeți de la bom12s08-in-f14.1e100.net (142.250.67.206): icmp_seq=1 ttl=117 time=30.9 ms 64 de octeți de la bom12s08-in-f14.1e100.net (1427.2500.net): 1427. =117 time=121 ms 64 bytes from bom12s08-in-f14.1e100.net (142.250.67.206): icmp_seq=206 ttl=117 time=86.5 ms 64 bytes from bom12s08-in-in-f104.201e (142.250.67.206): ): icmp_seq=207 ttl=117 time=105 ms Terminat gaurav@ubuntu:~$ 

Aici "ping youtube.com” procesul este acum oprit și ”ping bbc.com” încă rulează pe terminal.

În caz, dacă am fi folosit pkill ping comanda, i-ar fi ucis pe ambii ping procese, ceea ce este nedorit.

Semnale utilizate cu pkill comanda

pkill forțează un proces să se închidă prin trimiterea unui semnal specific acelui proces. Există trei semnale posibile care pkill comanda poate trimite procesului în funcție de comanda pe care o dă utilizatorul.

Mai jos este lista semnalelor disponibile.

SemnalSpecificație
1(HUP)reîncarcă procesul specificat
9 (UCIDE)distruge procesul specificat
15 (TERMEN)oprește sau anulează ușor procesul specificat

Pentru acest tutorial, ne vom baza foarte mult pe UCIDE semnal. Să trecem prin câteva exemple pentru a înțelege mai bine.

Folosind pgrep comanda pentru a obține pid potrivire cu numele apache.

gaurav@ubuntu:~$ pgrep apache 1218 10402 10403 gaurav@ubuntu:~$
pkill -KIll apache

SAU puteți folosi și comanda cu numere (de ex. 1, 9, 15)

pkill -9 apache

Ambele comenzi prezentate mai sus vor ucide procesul apache. Confirmarea cu pgrep comanda din nou.

gaurav@ubuntu:~$ pgrep apache gaurav@ubuntu:~$

Dupa cum pgrep comanda nu returnează nicio ieșire, dovedește că procesul apache a fost ucis.

Concluzie

În acest tutorial, am aflat despre pkill comanda și cum este folosită pentru a ucide procesul folosind numele procesului direct. Am aflat și despre pgrep comandă care este folosită pentru a prelua ID-ul procesului rulat de orice utilizator specific. The pgrep comanda ne permite să verificăm dacă procesul este oprit.