Linux en español
Tutoriales

Matar procesos en Linux con el comando Kill

matar-procesos-linux-comando-kill
4 minutos de lectura

Linux es un gran y avanzado sistema operativo, pero no es perfecto. De vez en cuando, algunas aplicaciones pueden comenzar a comportarse de manera irregular y dejar de responder o comenzar a consumir muchos recursos del sistema. Las aplicaciones que no responden no se pueden reiniciar porque el proceso de la aplicación original nunca se cierra por completo. La única solución es reiniciar el sistema o eliminar el proceso de la aplicación.

Existen varias utilidades que le permiten finalizar procesos errantes killsiendo el más utilizado.

Matar comando

killes un shell incorporado en la mayoría de los shells derivados de Bourne como Bash y Zsh. El comportamiento del comando es ligeramente diferente entre los shells y el /bin/killejecutable independiente.

Use el typecomando para mostrar todas las ubicaciones en su sistema que contengan kill:

type -a kill 
Salida:
kill is a shell builtin
kill is /bin/kill 

El resultado anterior indica que el intérprete de comandos de shell tiene prioridad sobre el ejecutable independiente, y se usa cada vez que escribe kill. Si desea utilizar el binario, escriba la ruta completa al archivo /bin/kill. En este artículo, usaremos el Bash incorporado.

La sintaxis del killcomando toma la siguiente forma:

kill [OPTIONS] [PID]...

El killcomando envía una señal a procesos específicos o grupos de procesos, haciendo que actúen de acuerdo con la señal. Cuando no se especifica la señal, su valor predeterminado es -15(-TERM).

Las señales más utilizadas son:

  • 1HUP) – Recargar un proceso.
  • 9KILL) – Mata un proceso.
  • 15TERM) – Detén con gracia un proceso.

Para obtener una lista de todas las señales disponibles, invoque el comando con la -lopción:

 kill -l 

Las señales se pueden especificar de tres maneras diferentes:

  1. Usando el número (por ejemplo, -1-s 1).
  2. Usando el prefijo “SIG” (por ejemplo, -SIGHUP-s SIGHUP).
  3. Sin el prefijo “SIG” (por ejemplo, -HUP-s HUP).

Los siguientes comandos son equivalentes entre sí:

kill -1 PID_NUMBER
kill -SIGHUP PID_NUMBER
kill -HUP PID_NUMBER 

Los PID proporcionados al killcomando pueden ser uno de los siguientes:

  • Si PIDes mayor que cero, la señal se envía al proceso con una ID igual a PID.
  • Si PIDes igual a cero, la señal se envía a todos los procesos en el grupo de procesos actual. En otras palabras, la señal se envía a todos los procesos que pertenecen al GID del shell que invocó el killcomando. Use el ps -efjcomando para ver las ID de grupo de proceso (GID).
  • Si PIDes igual a -1, la señal se envía a todos los procesos con el mismo UID que el usuario que invoca el comando. Si el usuario que invoca es root, la señal se envía a todos los procesos excepto init y el killproceso en sí.
  • Si PIDes menor que -1, la señal se envía a todos los procesos en el grupo de procesos eq con GID igual al valor absoluto de PID.

Los usuarios habituales pueden enviar señales a sus propios procesos, pero no aquellos que pertenecen a otros usuarios, mientras que el usuario raíz puede enviar señales a los procesos de otros usuarios.

Terminar procesos usando el  comando kill

Para finalizar o eliminar un proceso con el killcomando, primero debe encontrar el número de identificación del proceso (PID). Esto se puede hacer utilizando diferentes comandos, tales como toppspidofpgrep.

Supongamos que el navegador Firefox no responde y necesita eliminar el proceso de Firefox. Para encontrar los PID del navegador, use el pidofcomando:

 pidof firefox 

Una vez que conozca los números de los procesos, puede terminarlos todos enviando la TERMseñal:

 kill -9 2551 2514 1963 1856 1771 

En lugar de buscar PID y luego finalizar los procesos, puede combinar los comandos anteriores en uno:

 kill -9 $(pidof firefox) 

Procesos de recarga utilizando el comandokill

Otro caso de uso común killes enviar la HUPseñal, que le dice a los procesos que recarguen sus configuraciones.

Por ejemplo, para volver a cargar Nginx , debe enviar una señal al proceso maestro. El ID del proceso del proceso maestro de Nginx se puede encontrar en el nginx.pidarchivo, que normalmente se encuentra en el /var/rundirectorio.

Use el catcomando para encontrar el PID maestro:

 cat /var/run/nginx.pid 
Salida:
30251

Una vez que encuentre el PID maestro, vuelva a cargar la configuración de Nginx escribiendo:

 sudo kill -1 30251 

El comando anterior debe ejecutarse como root o usuario con privilegios de sudo.

Entradas relaccionadas

Cómo instalar plesk sobre linux

Diego García Cuesta

Cifrar tus archivos en la nube usando Cryptomator en Linux

Diego García Cuesta

3 Maneras fáciles de crear medios USB de arranque a partir de ISO en Ubuntu

Diego García Cuesta

Failed to start startup script for nginx service in plesk

Linux en Español

Cómo instalar VirtualBox en Ubuntu/Debian

Diego García Cuesta

Cómo mostrar una lista de todas las bases de datos en MySQL

Diego García Cuesta