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ón | Descripción |
-u | lista de identificación de proceso propiedad de un usuario específico |
-C | contar el número de procesos coincidentes |
-I | enumerar solo los nombres de los procesos |
-a | enumerar 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.
Opciones | Descripción |
-F | coincidir con argumentos completos, incluidos espacios, comillas, caracteres especiales |
-u | para informar al proceso pkill para que coincida con el proceso que está ejecutando el usuario especificado |
-1 | recarga el proceso |
-9 | mata el proceso |
-15 | aborta 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ñal | Especificació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.