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ó |
-u | identificador de procés de llista propietat d'un usuari específic |
-c | comptar el nombre de processos de concordança |
-I | llista només els noms dels processos |
-a | llista 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.
Opcions | Descripció |
-f | coincideix amb arguments complets, inclosos espais, cometes i caràcters especials |
-u | per informar el procés pkill perquè coincideixi amb el procés executat per l'usuari especificat |
-1 | torna a carregar el procés |
-9 | mata el procés |
-15 | avorta 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.com
El 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.
Senyal | Especificació |
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.