Cómo matar el proceso por nombre en Linux

Forzar el cierre de los procesos que se comportan mal usando estos comandos de Linux

Para explicar el significado de un "proceso" en las palabras más simples es que es una instancia en ejecución de cualquier aplicación o programa en su sistema. Es posible que esté ejecutando múltiples aplicaciones simultáneamente, como navegar, escuchar música trabajando en su terminal, etc. Hay muchos procesos en segundo plano asociados con estas aplicaciones que son ejecutados por el usuario.

Cada aplicación o programa que se ejecuta en su sistema crea múltiples procesos asociados con su única aplicación. A veces esto puede ser un problema y deshacerse de estos procesos es la única opción que tiene.

"Matar" un proceso es una opción útil que Linux le ofrece para detener los procesos en curso, ya sea un proceso en primer plano o en segundo plano. En este artículo, revisaremos los comandos como matar, pkill y Mátalos a todos para forzar el cierre de cualquier proceso en un sistema.

¿Por qué matar un proceso?

Es importante comprender el concepto de matar un proceso antes de seguir adelante en este tutorial. Matar puede parecer una forma muy brutal de expresar el concepto, pero lo que significa en sentido figurado es abortar por la fuerza un proceso.

Ahora bien, ¿por qué abortar o abandonar un proceso en curso? Cuando se ejecutan varios procesos en segundo plano, es posible que todos o algunos de ellos no funcionen correctamente y que su sistema no funcione correctamente. Esto retrasa sus tareas en curso ya que el proceso defectuoso puede congelar su sistema por un tiempo.

A veces, salir de todos los procesos que se comportan mal parece ser la única opción para restaurar la normalidad en su sistema. Linux le permite matar un proceso usando el pid o el nombre del proceso.

Utilizando el pgrep mando

La mayoría de los usuarios de Linux están familiarizados con grep mando. El pgrep El comando se puede utilizar en líneas similares del grep.

pgrep comando cuando se usa, muestra el pid del proceso en ejecución como se especifica en el comando. Este comando resultará muy útil al usar el pkill mando.

Sintaxis general:

pgrep [opciones] [patrón]

Opciones importantes disponibles con el pgrep mando

OpciónDescripción
-ulista de identificación de proceso propiedad de un usuario específico
-Ccontar el número de procesos coincidentes
-Ienumerar solo los nombres de los procesos
-aenumerar la ruta completa del nombre del proceso

Demostremos el uso de pgrep comando usando un ejemplo.

pgrep -u gaurav gnomo

Aquí, deseamos ver el pids del proceso gnome que es propiedad del usuario "gaurav". Opción -u le permite listar los pids de los procesos propiedad de un usuario específico. En este caso, el usuario gaurav.

Producción:

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

A medida que avanzamos con este tutorial, pgrep El comando nos ayudará a confirmar si el proceso se ha cancelado o aún se está ejecutando.

Pasemos ahora al pkill comando y su ejecución.

Utilizando pkill mando

Puedes usar el pkill comando en Linux para matar el proceso usando el nombre del proceso. Incluso si no conoces el pid de algún proceso, incluso entonces puede matar ese proceso en particular utilizando el pkill mando.

Los procesos se pueden especificar con su nombre completo o el nombre parcial mientras se utiliza el pkill mando. Incluso si ingresa el nombre parcial del proceso, el pkill El comando hará coincidir todos los procesos en ejecución con el nombre coincidente que ingresó en el comando.

Sintaxis:

pkill [opciones] [process_name_pattern] 

Ejemplo:

Visualicemos los procesos que se están ejecutando actualmente usando el cima mando. También puede utilizar el PD comando para listar los procesos.

cima
arriba - 14:24:02 hasta 3:12, 1 usuario, promedio de carga: 0.29, 0.48, 0.58 Tareas: 221 en total, 1 en ejecución, 172 en suspensión, 0 detenido, 1 zombi% CPU (s): 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 free, 2233152 used, 1084632 buff / cache KiB Swap: 4083708 total, 3378884 free, 704824 used. 1187268 disponible Mem PID USER PR NI VIRT RES SHR S% CPU% MEM TIME + COMMAND 4077 gaurav 20 0 3312128 673480 118360 S 19.6 17.1 15: 13.23 Contenido 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 root 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-terminal- 3915 gaurav 20 0 2804900 231524 111228 S 0.7 5.9 0: 54.42 Contenido web 4146 gaurav 20 0 3017924 245304 120604 S 0.7 6.2 2: 01.21 Contenido web 4417 gaurav 20 0 2964208 234396 119160 S 0.7 6.0 0 : 59.90 Contenido web 4860 gaurav 20 0 3066800 372920 132544 S 0.7 9.5 0: 48.20 Contenido web 16007 gaurav 20 0 41944 3780 3116 R 0.7 0.1 0: 00.28 arriba 

Utilizando cima El comando mostrará múltiples procesos en su terminal. Intentemos mostrar el proceso con un nombre en particular. Usaremos el grep comando para mostrar un proceso cuyo nombre coincide con la cadena "mongo".

arriba | grep -i mongo

Nota: Aquí, he usado la opción -i para que la búsqueda no distinga entre mayúsculas y minúsculas.

La salida de este comando mostrará los procesos que coinciden con el nombre "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

Ahora, usaremos el pkill comando para matar el proceso llamado "mongo".

pkill mongo

Este comando ahora matará el proceso mongo. Podemos confirmar si el proceso ha sido forzado a cerrarse usando el pgrep comando que muestra el pid del proceso en ejecución de acuerdo con los criterios especificados por el usuario.

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

Este comando no devolverá ningún valor. Esto confirma que el proceso "mongo" ahora se mata usando el pkill mando.

Opciones de uso frecuente con pkill mando

Mientras usa el pkill comando necesitaremos las opciones mencionadas para un uso adecuado y sin esfuerzo del pkill mando.

OpcionesDescripción
-Fcoincidir con argumentos completos, incluidos espacios, comillas, caracteres especiales
-upara informar al proceso pkill para que coincida con el proceso que está ejecutando el usuario especificado
-1recarga el proceso
-9mata el proceso
-15aborta graciosamente un proceso

Veamos un ejemplo más de pkill comando usando el -F opción.

Hay dos comandos que se están ejecutando actualmente en el terminal, como se muestra a continuación.

ping bbc.com ping youtube.com

Ambos procesos son iniciados por el silbido mando. Ahora, supongamos que deseamos terminar solo un proceso "ping youtube.com", entonces tenemos que usar el -F opción con la pkill comando que mata un proceso con un nombre específico, incluidos los espacios y las comillas del nombre del proceso.

Mando:

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

Resultado:

gaurav @ ubuntu: ~ $ ping youtube.com PING youtube.com (142.250.67.206) 56 (84) bytes de datos. 64 bytes de bom12s08-in-f14.1e100.net (142.250.67.206): icmp_seq = 1 ttl = 117 tiempo = 30.9 ms 64 bytes de bom12s08-in-f14.1e100.net (142.250.67.206): icmp_seq = 2 ttl = 117 tiempo = 121 ms 64 bytes de bom12s08-in-f14.1e100.net (142.250.67.206): icmp_seq = 206 ttl = 117 tiempo = 86.5 ms 64 bytes de bom12s08-in-f14.1e100.net (142.250.67.206 ): icmp_seq = 207 ttl = 117 tiempo = 105 ms Terminado gaurav @ ubuntu: ~ $ 

Aquí el "ping youtube.com"Ahora se mata y el"ping bbc.com”Todavía se está ejecutando en la terminal.

En caso de que hubiéramos utilizado el pkill ping comando, habría matado tanto al silbido procesos, lo cual es indeseable.

Señales utilizadas con pkill mando

pkill obliga a un proceso a salir enviando una señal específica a ese proceso. Hay tres posibles señales que pkill El comando podría enviarse al proceso dependiendo del comando que dé el usuario.

A continuación se muestra la lista de las señales disponibles.

SeñalEspecificación
1(HUP)recarga el proceso especificado
9 (MATAR)mata el proceso especificado
15 (TÉRMINO)detiene o aborta suavemente el proceso especificado

Para este tutorial, confiaremos en gran medida en el MATAR señal. Repasemos algunos ejemplos para entenderlo mejor.

Utilizando el pgrep comando para obtener el pid coincidiendo con el nombre apache.

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

O también puede usar el comando con números (por ejemplo, 1, 9, 15)

pkill -9 apache

Ambos comandos que se muestran arriba matarán el proceso apache. Confirmando con el pgrep comando de nuevo.

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

Como el pgrep El comando no devuelve ninguna salida, prueba que el proceso apache ha sido eliminado.

Conclusión

En este tutorial, aprendimos sobre la pkill comando y cómo se usa para matar el proceso usando el nombre del proceso directamente. También aprendimos sobre el pgrep comando que se utiliza para obtener el ID de proceso del proceso ejecutado por cualquier usuario específico. El pgrep El comando nos permite verificar si el proceso se mata.