Cómo matar un proceso en Linux

Cómo matar un proceso en Linux
Cada sistema operativo de Linux viene con el comando Kill. El único propósito de esta herramienta es terminar un proceso objetivo. Es una herramienta poderosa que hace que Linux sea bastante versátil, especialmente en los campos de servidor y empresarial donde un cambio/actualización importante puede entrar en vigencia 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, utilizaremos un puñado de herramientas: matar, pkill, y Mátalos a todos. Todos ellos funcionan básicamente de la misma manera.

Estas herramientas no terminan el proceso en sí mismas. En cambio, envían una señal designada a los grupos de proceso o proceso de destino. Si no especificó ninguna señal específica, SigterM se envía como 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.

$ Kill
$ pkill
$ Killall

Siempre que sea posible, se recomienda usar matar.

Matar, pkill y Mátalos a todos ubicación

Kill es el comando predeterminado para terminar un proceso.

$ Kill --help

Se ejecuta desde el directorio /usr /bin.

$ que mata

El beneficio es que también permite el acceso a Pkill, otro comando similar a Kill que permite la terminación del proceso en función de su nombre.

$ pkill --help
$ que pkill

Algunas aplicaciones ejecutan múltiples procesos del mismo ejecutable. Si desea cancelar una serie de procesos con el mismo nombre, use la herramienta Killall.

$ killall --help
$ que Killall

Enumerar todos los procesos de ejecución

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

$ ps -a

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

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

$ Pidof

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

$ PGREP

Matar señales

Ahora, echemos un vistazo a las señales que soportan las herramientas de matar. Es una gran lista. 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 Kill apoya.

$ Kill -l

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

$ Kill -

O,

$ Kill -

Las señales más populares son SighUp (1), Sigkill (9) y Sigterm (15). En general, Sigterter es la forma predeterminada y segura de rescindir un proceso objetivo.

En el caso de Pkill, la señal apoyada es la misma que Kill. Sin embargo, en el caso de Killall, el número de señales compatibles y los nombres de las señales son diferentes.

$ killall -l

Matar un proceso

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

$ Kill

Aquí, Kill enviará la señal predeterminada Sigterm al PID (s). Si desea finalizar múltiples procesos, mencione todos los PID separados por el espacio.

$ Kill

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

Quiere finalizar un proceso utilizando su nombre solamente? Use Pkill.

$ pkill

En algunos casos, una aplicación en particular puede tener demasiados procesos en ejecución. Escribir todos esos PID es lento y agotador. En tales escenarios, usaremos la herramienta Killall. Es bastante similar a Kill, pero funciona con el nombre del proceso.

$ Killall

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

$ Killall Firefox

Desea finalizar todos los procesos que se ejecutan bajo un cierto usuario? Killall puede hacer el trabajo, no hay problema. Tenga cuidado al ejecutar este, ya que podría desglosar el sistema y crear otros problemas. No funcionará si está tratando de terminar los procesos que se ejecutan bajo un usuario diferente con un mayor privilegio.

$ killall -u

Conflicto de permiso

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 finalizar los procesos que se ejecutan con un mayor privilegio, solo un procesos con igual/menor privilegio. Además, un usuario no puede manipular procesos que se ejecutan bajo diferentes usuarios.

Por ejemplo, consideremos el comando sí. Si se llama como el usuario actual, se puede terminar fácilmente usando Kill.

$ Kill Yes

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

Del mismo modo, si un proceso se ejecutaba bajo otro usuario, no puede terminarlo desde una cuenta de usuario diferente.

Pensamientos finales

En este artículo, solo se exhibieron 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 habilidades de cualquier herramienta, recomiendo revisar la página del hombre.

$ hombre mata
$ hombre pkill

Disfrutar!