Com matar el procés pel nom a Linux

Força la sortida dels processos que es comporten malament mitjançant aquestes ordres de Linux

Per explicar el significat d'un "Procés" amb les paraules més senzilles és que és una instància en execució de qualsevol aplicació o programa del vostre sistema. És possible que estigueu executant diverses aplicacions simultàniament, com ara navegar, escoltar música treballant al vostre terminal, etc. Hi ha molts processos en segon pla associats a aquestes aplicacions que executa l'usuari.

Cada aplicació o programa que s'executa al vostre sistema crea diversos processos associats a la vostra única aplicació. De vegades, això pot ser un problema i desfer-se d'aquests processos és l'única opció que teniu.

"Matar" un procés és una opció útil que us ofereix Linux per aturar els processos en curs, ja sigui un procés en primer pla o un procés en segon pla. En aquest article, revisarem les ordres com matar, pkill i matar per forçar la sortida de qualsevol procés en un sistema.

Per què matar un procés?

Entendre el concepte de matar un procés és important abans de seguir endavant en aquest tutorial. Matar pot semblar una manera molt brutal d'expressar el concepte, però el que significa en sentit figurat és avortar per força un procés.

Ara, per què avortar o abandonar un procés en curs? Quan s'executen diversos processos en segon pla, tots o alguns d'ells poden funcionar malament i poden provocar que el vostre sistema es comporti malament. Això retarda les vostres tasques en curs, ja que el procés de mal funcionament pot congelar el vostre sistema durant un temps.

De vegades, sortir de tots els processos de mal comportament sembla ser l'única opció per restaurar la normalitat al vostre sistema. Linux us permet matar un procés mitjançant el pid o el nom del procés.

Utilitzant el pgrep comandament

La majoria dels usuaris de Linux estan familiaritzats amb el grep comandament. El pgrep L'ordre es pot utilitzar en línies similars del grep.

pgrep quan s'utilitza, mostra l'ordre pid del procés en execució tal com s'especifica a l'ordre. Aquesta ordre serà molt útil mentre utilitzeu pkill comandament.

Sintaxi general:

pgrep [opcions] [patró]

Opcions importants disponibles amb el pgrep comandament

OpcióDescripció
-uidentificador de procés de llista propietat d'un usuari específic
-ccomptar el nombre de processos de concordança
-Illista només els noms dels processos
-allista la ruta completa del nom del procés

Demostrem l'ús de pgrep comanda utilitzant un exemple.

pgrep -u gaurav gnome

Aquí, volem veure el pids del procés gnome que és propietat de l'usuari 'gaurav'. Opció -u us permet enumerar pids dels processos propietat d'un usuari concret. En aquest cas, l'usuari gaurav.

Sortida:

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

A mesura que avancem amb aquest tutorial, pgrep L'ordre ens ajudarà a confirmar si el procés s'ha acabat o encara s'està executant.

Passem ara a la pkill comandament i la seva execució.

Utilitzant pkill comandament

Podeu utilitzar el pkill comanda a Linux per matar el procés utilitzant el nom del procés. Encara que no conegui el pid d'algun procés, fins i tot llavors podeu matar aquest procés en particular utilitzant el pkill comandament.

Els processos es poden especificar amb el seu nom complet o el nom parcial mentre s'utilitza pkill comandament. Encara que introduïu el nom parcial del procés, el pkill L'ordre coincidirà amb tots els processos en execució amb el nom coincident que heu introduït a l'ordre.

Sintaxi:

pkill [opcions][process_name_pattern] 

Exemple:

Anem a mostrar els processos que s'executen actualment utilitzant el superior comandament. També podeu utilitzar el ps comanda per llistar els processos.

superior
superior - 14:24:02 fins a les 3:12, 1 usuari, càrrega mitjana: 0,29, 0,48, 0,58 Tasques: 221 en total, 1 en execució, 172 dormint, 0 aturats, 1 %Cpu(s) 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 lliures, 2233152 utilitzats, 1084632 buff/caché KiB Swap: 408343787, 40834, 878787. 1187268 va USUARI Mem PID PR NI Virt RES SHR S% CPU% MEM TEMPS + COMANDO 4077 Gaurav 20 0 3.312.128 673.480 118.360 S 19.6 17.1 15: 13.23 contingut web 3712 Gaurav 20 0 3.953.008 453.544 116.476 S 4,0 11,5 9: 28.39 TrenzadoPrincipal 2010 Gaurav 20 0 4084232 111096 45.024 S 1,7 2,8 3: 14,85 gnome-shell 1.197 arran 20 0 1.039.612 33704 22988 S 1,0 0,9 3: 04,42 Xorg 1426 couchdb 20 0 3.772.396 16908 2520 S 0,7 0,4 1: 50,83 beam.smp 3288 Gaurav 20 0 722 480 25 048 18 272 S 0,7 0,6 0: 06,84 gnome-Terminal- 3915 Gaurav 20 0 2.804.900 231.524 111.228 S 0,7 5,9 0: 54,42 contingut web 4146 Gaurav 20 0 3.017.924 245.304 120.604 S 0,7 6,2 2: 01,21 contingut web 4417 Gaurav 20 0 2.964.208 234.396 119.160 S 0,7 6,0 0 :59,90 Contingut web 4860 gaurav 20 0 3066800 372920 132544 S 0,7 9,5 0:48,20 Contingut web 16007 gaurav 20 0 41944 3780 3116 R 0,7: 0,00. 

Utilitzant superior L'ordre mostrarà diversos processos al vostre terminal. Intentem mostrar el procés amb un nom concret. Farem servir el grep comanda per mostrar un procés el nom del qual coincideix amb la cadena "mongo".

dalt | grep -i mongo

Nota: Aquí, he utilitzat l'opció -i per fer que la cerca no distingeix entre majúscules i minúscules.

La sortida d'aquesta ordre mostrarà els processos que coincideixen amb el nom "mongo"

 1158 MongoDB 20 0 288 564 4848 1320 S 0,7 0,1 1: 03,22 mongod 1158 MongoDB 20 0 288 564 4848 1320 S 1,0 0,1 1: 03,25 mongod 1158 MongoDB 20 0 288 564 4848 1320 S 0,7 0,1 1: 03,27 mongod 1158 MongoDB 20 0 288 564 4848 1320 S 0,7 0,1 1: 03,29 mongod 1158 MongoDB 20 0 288 564 4848 1320 S 0,7 0,1 1: 03,31 mongod 1158 MongoDB 20 0 288 564 4848 1320 S 0,7 0,1 1: 03,33 mongod 1158 MongoDB 20 0 288 564 4848 1320 S 1,0 0,1 1: 03,36 mongod 1158 MongoDB 20 0 288 564 4848 1320 S 0,7 0,1 1: 03,38 mongod 1158 MongoDB 20 0 288 564 4848 1320 S 0,7 0,1 1: 03,40 mongod 1158 MongoDB 20 0 288 564 4848 1320 S 1,0 0,1 1: 03,43 mongod 1158 MongoDB 20 0 288 564 4848 1320 S 0,7 0,1 1: 03,45 mongod 1158 MongoDB 20 0 288 564 4848 1320 S 1,0 0,1 1: 03,48 mongod 1158 MongoDB 20 0 288 564 4848 1320 S 0,3 0,1 1: 03,49 mongod 1158 MongoDB 20 0 288 564 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

Ara, farem servir el pkill comanda per matar el procés anomenat "mongo".

pkill mongo

Aquesta ordre ara matarà el procés mongo. Podem confirmar si el procés s'ha forçat a sortir utilitzant el pgrep comanda que mostra el pid del procés en execució segons els criteris especificats per l'usuari.

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

Aquesta ordre no retornarà cap valor. Això confirma que el procés "mongo" ara s'elimina amb el pkill comandament.

Opcions que s'utilitzen sovint amb pkill comandament

Mentre s'utilitza el pkill L'ordre necessitarem les opcions esmentades per a un ús adequat i sense esforç pkill comandament.

OpcionsDescripció
-fcoincideix amb arguments complets, inclosos espais, cometes i caràcters especials
-uper informar el procés pkill perquè coincideixi amb el procés executat per l'usuari especificat
-1torna a carregar el procés
-9mata el procés
-15avorta amb gràcia un procés

Vegem-ne un exemple més pkill comanda utilitzant el -f opció.

Hi ha dues ordres que s'executen actualment al terminal, tal com es mostra a continuació.

ping bbc.com ping youtube.com

Tots dos processos són iniciats per la ping comandament. Ara, suposem que només volem finalitzar un procés "ping youtube.com", llavors haurem d'utilitzar -f opció amb el pkill comanda que mata un procés amb un nom específic, inclosos els espais i cometes del nom del procés.

Comandament:

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

Resultat:

gaurav@ubuntu:~$ ping youtube.com PING youtube.com (142.250.67.206) 56(84) bytes de dades. 64 bytes de bom12s08-in-f14.1e100.net (142.250.67.206): icmp_seq=1 ttl=117 temps=30,9 ms 64 bytes de bom12s08-in-f14.1e100.net (1427.250.net): 1427.2500. =117 temps=121 ms 64 bytes de bom12s08-in-f14.1e100.net (142.250.67.206): icmp_seq=206 ttl=117 temps=86,5 ms 64 bytes de bom12s08-in-f104.511e (142.250.67.206) ): icmp_seq=207 ttl=117 temps=105 ms Terminat gaurav@ubuntu:~$ 

Aquí, el "ping a youtube.comEl procés s'ha acabat i el "ping a bbc.com” encara s'està executant al terminal.

Per si de cas, si haguéssim fet servir el pkill ping ordre, hauria matat tant el ping processos, cosa indesitjable.

Senyals utilitzats amb pkill comandament

pkill obliga a sortir d'un procés enviant un senyal específic a aquest procés. Hi ha tres possibles senyals que pkill L'ordre es pot enviar al procés depenent de l'ordre que doni l'usuari.

A continuació es mostra la llista dels senyals disponibles.

SenyalEspecificació
1(HUP)torna a carregar el procés especificat
9 (MATAR)mata el procés especificat
15 (TERME)atura o avorta suaument el procés especificat

Per a aquest tutorial, confiarem molt en el MATAR senyal. Passem per alguns exemples per entendre-ho millor.

Utilitzant el pgrep comanda per obtenir el pid coincidint amb el nom apache.

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

O també podeu utilitzar l'ordre amb números (per exemple, 1, 9, 15)

pkill -9 apache

Les dues ordres mostrades anteriorment mataran el procés apache. Confirmant amb el pgrep manar de nou.

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

Com el pgrep L'ordre no retorna cap sortida, demostra que el procés Apache ha estat eliminat.

Conclusió

En aquest tutorial, hem après sobre pkill i com s'utilitza per matar el procés utilitzant el nom del procés directament. També vam aprendre sobre el pgrep comanda que s'utilitza per obtenir l'identificador de procés del procés executat per qualsevol usuari específic. El pgrep L'ordre ens permet comprovar si el procés s'ha acabat.