Cómo matar un proceso en Linux

How Kill Process Linux



Cada sistema operativo Linux viene con el comando kill. El único propósito de esta herramienta es finalizar un proceso de destino. Es una herramienta poderosa que hace que Linux sea bastante versátil, especialmente en los campos de servidores y empresas, donde un cambio / actualización importante puede tener efecto sin reiniciar toda la máquina. En este artículo, mostraré cómo matar un proceso usando matar , pkill y Mátalos a todos .

Matar un proceso

Para matar un proceso, usaremos un puñado de herramientas: matar , pkill , y Mátalos a todos . Todos funcionan básicamente de la misma manera.







Estas herramientas no terminan el proceso por sí mismas. En su lugar, envían una señal designada al proceso o grupos de procesos objetivo. Si no especificó ninguna señal específica, SIGTERM se envía como la señal predeterminada. Sin embargo, hay una serie de señales compatibles, por ejemplo, SIGKILL, SIGHUP, etc.



Aquí está la estructura de comando básica para matar , pkill y Mátalos a todos .



$matar <señal_o_opciones> <PID(s)>
$ pkill<señal_o_opciones> <nombre del proceso>
$Mátalos a todos <opción> <nombre del proceso>

Siempre que sea posible, se recomienda utilizar matar .





Matar , pkill y Mátalos a todos ubicaciones

Kill es el comando predeterminado para finalizar un proceso.



$matar --ayuda

Se ejecuta desde el directorio / usr / bin.

$cuales matar

El beneficio es que también permite el acceso a pkill, otro comando similar a kill que permite terminar el proceso según su nombre.

$pkill--ayuda

$cualespkill

Algunas aplicaciones ejecutan varios procesos del mismo ejecutable. Si desea terminar varios procesos con el mismo nombre, use la herramienta killall.

$Mátalos a todos --ayuda

$cuales Mátalos a todos

Listado de todos los procesos en ejecución

La primera tarea es identificar el PID (número de identificación del proceso) y / o el nombre del proceso que le gustaría terminar. Para este ejemplo, utilizaré Firefox como proceso de destino para finalizar. Ejecute el siguiente comando para enumerar todos los procesos en ejecución en el sistema.

$ps -A

Para la mayoría de las tareas, necesitamos conocer el PID del proceso objetivo. Sin embargo, en determinadas situaciones, es más adecuado utilizar el nombre del proceso.

Si conoce el nombre exacto del proceso de destino, puede obtener directamente el PID utilizando pidof .

$pidof <nombre del proceso>

Otra herramienta interesante para obtener información sobre el proceso de destino es pgrep. Está diseñado específicamente para ese propósito.

$pgrep<opción> <nombre del proceso>

Matar señales

Ahora, echemos un vistazo a las señales que admiten las herramientas de eliminación. Es una lista enorme. Por supuesto, no todos son necesarios para cada situación. De hecho, la mayoría de las situaciones requieren solo un puñado de señales.

Primero, echemos un vistazo a la lista que acaba con los apoyos.

$matar -los

Hay 2 formas de definir qué señal desea enviar. Puede utilizar el nombre completo de la señal o su valor equivalente.

$matar-<señal> <PID>

O,

$matar-<valor_señal> <PID>

Las señales más populares son SIGHUP (1), SIGKILL (9) y SIGTERM (15). Generalmente, SIGTERM es la forma predeterminada y más segura de finalizar un proceso de destino.

En el caso de pkill, la señal admitida es la misma que kill. Sin embargo, en el caso de killall, el número de señales admitidas y los nombres de las señales son diferentes.

$Mátalos a todos -los

Matar un proceso

Para matar un proceso, necesitamos el PID de ese proceso objetivo. Suponiendo que tiene el PID, ejecute el siguiente comando para eliminarlo.

$matar <opción> <PID>

Aquí, kill enviará la señal predeterminada SIGTERM a los PID. Si desea terminar varios procesos, mencione todos los PID separados por espacio.

$matar <opción> <PID_1> <PID_2>

Especifiquemos qué señal le gustaría enviar al objetivo.

¿Quiere terminar un proceso usando solo su nombre? Utilice pkill.

$pkill<opción> <nombre del proceso>

En algunos casos, una aplicación en particular puede tener demasiados procesos en ejecución. Escribir todos esos PID lleva mucho tiempo y es tedioso. En tales escenarios, usaremos la herramienta killall. Es bastante similar a kill pero funciona con el nombre del proceso.

$Mátalos a todos <opción> <nombre del proceso>

Por ejemplo, al ejecutar Firefox, inicia un puñado de procesos. Para matarlos a todos a la vez, ejecute este comando.

$Mátalos a todosFirefox

¿Quiere terminar todos los procesos que se están ejecutando bajo un determinado usuario? Killall puede hacer el trabajo, no hay problema. Tenga cuidado al ejecutar este, ya que podría dañar el sistema y crear otros problemas. No funcionará si está intentando finalizar procesos que se ejecutan con un usuario diferente con mayor privilegio.

$Mátalos a todos -u <usuario>

Conflicto de permisos

Las características inherentes de la jerarquía de usuarios de Linux también se aplican cuando está a punto de finalizar una aplicación. Un usuario no puede terminar procesos que se ejecutan con privilegios más altos, solo procesos con privilegios iguales o más bajos. Además, un usuario no puede manipular procesos que se ejecutan con un usuario diferente.

Por ejemplo, consideremos el comando yes. Si se llama como el usuario actual, se puede terminar fácilmente con kill.

$matar

Ahora, ¿y si estaba corriendo bajo raíz ? Llamar a kill como usuario actual no funcionará.

Del mismo modo, si un proceso se estaba ejecutando con otro usuario, no puede finalizarlo desde una cuenta de usuario diferente.

Pensamientos finales

En este artículo, solo se mostraron los conceptos básicos y el uso común de estos comandos. Estas herramientas de matar son capaces de más que eso. Para tener un conocimiento profundo de las capacidades de cualquier herramienta, recomiendo consultar la página de manual.

$hombre matar

$hombrepkill

¡Disfrutar!