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țiune | Descriere |
-u | ID-ul procesului de listă deținut de un anumit utilizator |
-c | numără numărul de procese de potrivire |
-Eu | enumerați numai numele proceselor |
-A | listează 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țiuni | Descriere |
-f | potrivire cu argumente complete, inclusiv spații, ghilimele, caractere speciale |
-u | pentru a informa procesul pkill să se potrivească cu procesul rulat de utilizatorul specificat |
-1 | reîncarcă procesul |
-9 | ucide procesul |
-15 | avortează 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.
Semnal | Specificaț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.