Razones por las cuales Kill puede no funcionar en Linux, cómo resolverlo?

Razones por las cuales Kill puede no funcionar en Linux, cómo resolverlo?

Todos nosotros hemos experimentado, en un momento u otro, un programa congelado y no respondiendo. En tales casos, terminar el programa y reiniciarlo es una solución simple y eficiente. En este artículo, le mostraremos cómo puede finalizar procesos que no responden utilizando el comando Kill.

El comando matar

Como se mencionó anteriormente, cuando un programa deja de responder, y no puede reiniciarlo, necesita una nueva solución. En ese momento, los usuarios de Windows abrirían su administrador de tareas para deshacerse del proceso congelado. No hay un administrador de tareas incorporado en Linux, pero hay un comando que podemos usar para lograr el mismo efecto que la funcionalidad de tarea final en Windows. Este comando se conoce como el comando Kill, y podemos usarlo de múltiples maneras para ayudarnos y al sistema para deshacernos de las instancias corruptas.

Matar sintaxis

La sintaxis para el comando matar es sencilla.

$ Kill - [señal] PID

Aquí, dos cosas necesitan explicación: a saber, señal y pid. Veamos tanto uno por uno y aprender cómo contribuyen a la funcionalidad de este comando.

El parámetro de señal

Primero está la señal. Las señales son dígitos simples que representan un nombre. El comando matar puede realizar diferentes tareas dependiendo de la señal que proporcione. Los usuarios pueden usar más de 60 valores diferentes para señales, todas las cuales realizan tareas específicas y específicas. Para ver todas estas opciones, puede usar el siguiente comando:

$ Kill -l

Cuando usa este comando en el terminal de comando de Ubuntu, obtiene esto en su pantalla:

Como puede ver, hay un total de 64 opciones que puede seleccionar.

Aunque hay más de 60 señales diferentes, dos de las más comunes se describen a continuación.

  1. Sigkill (9): Como su nombre indica, este comando mata el proceso por completo sin guardar los datos del programa. Este comando solo debe usarse como último recurso.
  2. Sigterter (15): Esto genera una señal de terminación que cierra el programa de una manera de seguridad. Esta es también la señal predeterminada.

Las señales se pueden especificar de 3 maneras diferentes que se describen a continuación.

1. Podemos especificar la señal con el dígito respectivo:

$ kill -9 pid

2. Podemos especificar la señal con su nombre:

$ kill -sigkill pid

3. Podemos especificar la señal sin SIG en el nombre.

$ kill -kill pid

Todos estos comandos realizan la misma tarea.

El parámetro PID

PID es el número de identificación del proceso. En los sistemas similares a Linux y Unix, cada proceso llevado a cabo por el sistema recibe un número de identificación de proceso (denominado PID en adelante). Para matar un proceso, uno debe conocer su pid. Para encontrar el PID para un proceso dado, podemos usar los siguientes comandos.

$ Pidof [Nombre del proceso]
$ PGREP [Nombre del proceso]

Cuando usa estos dos comandos en el terminal de comandos de Ubuntu, obtiene el siguiente resultado.

Usando el comando matar

Ahora que has entendido la sintaxis, podemos ejecutar el comando matar. En aras del ejemplo, haremos uso de Kill en Thunderbird Mail: un programa preinstalado en Ubuntu. Primero identificaremos su PID y luego terminaremos el proceso utilizando la señal Sigterm.

Primero, abra el terminal de comando para Ubuntu. Una vez hecho, ejecute el siguiente comando:

$ pgrep Thunderbird

Debe obtener una salida similar a la que obtuvimos en la imagen a continuación:

Como ahora sabe, el PID de Thunderbird Mail ejecuta el siguiente comando para finalizar el proceso.

$ Kill -Sigterter 7075

O

$ Kill -15 7075

Cuando presione ENTER, notará que el proceso y su ventana ya no existen. También puede finalizar múltiples procesos juntos ingresando simultáneamente los PID de los procesos.

$ Kill -[señal] PID1 PID2 ... PIDN

Además, los usuarios pueden finalizar un proceso utilizando los comandos Kill y Pidof/PGREP en la misma línea. La sintaxis para tal arreglo es:

$ Kill -[señal] $ PGREP [Nombre del proceso]

Razones por las cuales matar puede no funcionar

Como se indicó anteriormente, la señal predeterminada enviada con el comando kill es Sigterm. Sigter esencialmente notifica el proceso que debe limpiarse y ser terminado. Esta es la forma "agradable" de terminar o matar un proceso. Sin embargo, con algunos procesos, es posible que la buena manera no lo corte.

Si nota que el proceso que había ordenado que termine todavía se ejecuta después de usar la señal Sigterm, no se preocupe, ya que esta es una complicación común que ocurre mientras se usa Kill. Como dijimos, esto ocasionalmente puede suceder y con ciertos procesos.

Para deshacerse de este problema, puede usar la señal Sigkill para terminar el proceso por completo. La señal Sigkill permite al sistema tomar las cosas en sus propias manos. Entonces, si cumple con una situación tan pegajosa, siempre puede salir de ella usando la señal Sigkill o -9.

Es importante que use Sigkill con moderación y cuando se presente con una situación que Sigterm no puede resolver. SigterT sigue siendo el valor predeterminado y el más seguro; Por lo tanto, la mejor manera de terminar un proceso.

El comando killall

El comando Kill es nativo de Linux y otros sistemas operativos basados ​​en UNIX, pero el comando killall es para usuarios solo de Linux. Este comando permite al usuario finalizar un proceso mediante el nombre del proceso. No hay necesidad de encontrar el PID del proceso. La sintaxis para el comando killall es:

$ Killall -[señal] [Nombre del proceso]

Este comando puede servir como una buena alternativa si, por alguna razón, Kill no funciona para usted incluso después de las soluciones prescritas.

Conclusión

Este artículo aprendió sobre el comando matar, su propósito, sintaxis, parámetros y uso. Además, vimos lo que puede hacer que el comando de matar no funcione correctamente y solucione estos problemas. Con suerte, esta ha sido una lectura informativa e interesante para usted, y resolvimos cualquier problema que tenía con este comando.