La administración de proceso en un sistema operativo es un tema muy amplio, el tema de miles de páginas de literatura técnica. Además, es un tema orientado a un público muy experto. Además, no se trata aquí de hacer una presentación al respecto, sino sólo de mostrar muy rápidamente, con un ejemplo, cómo cerrar un programa que ya no responde en Linux mediante la línea de comandos. Este artículo complementa el excelente artículo sobre métodos para cerrar un programa rebelde escrito anteriormente por Steve.
El comando que se expondrá aquí es el comando matar. que puedes usar con todas las distribuciones de Linux.
Kill no siempre hace honor a su nombre exactamente
De hecho, aunque también se utiliza (y principalmente) para esto, como veremos más adelante, el comando kill no sólo se utiliza para cerrar con autoridad un proceso recalcitrante. Ella puede hacer mucho más.
De hecho, La función básica del comando kill es enviar un mensaje (una señal) a un proceso en ejecución.. Estas señales pueden ser de diferentes tipos, e incluso puedes crear unas personalizadas. La variedad de señales básicas existentes es suficiente para mostrar la complejidad del tema, pero podemos mencionar entre ellas la pausa y el fondo de un proceso (señal 19 = SIGSTOP así como el imprescindible atajo de teclado CTRL + Z).
Kill todavía se usa principalmente para cerrar procesos.
De lo contrario es probable que hubiésemos elegido otro nombre de comando…
De manera educada
Como sabemos ahora, matar envía una señal a un proceso. La señal predeterminada enviada por kill es la señal 15, o SIGNO. Esto le pide al proceso que finalice correctamente, es decir, que se tome el tiempo para finalizar el procesamiento actual y liberar los recursos utilizados antes de invocar el cierre (es un poco más complejo que eso en realidad, porque, entre otras cosas, el proceso padre del proceso a cerrar influye en el procedimiento). Es esta señal la que se envía, por ejemplo, cuando hacemos clic en la pequeña cruz para cerrar una ventana de software, o cuando invocamos el comando matar sin especificar la señal a enviar. Cabe señalar que un proceso puede optar por ignorar esta señal, incluso si no está bloqueado.
Autoritariamente: cómo cerrar un programa que no responde en Linux desde la línea de comando
Hay casos en los que un programa o proceso ya no responde a los comandos de control que le envía el sistema operativo. Comúnmente se dice que está “plantado”. En estos casos invocaremos la señal 9 (SIGKILL) del comando matar. Esta vez, no es el proceso en sí el que recibirá la señal (de todos modos no puede hacerlo porque está fallado), sino que será el programador del kernel de Linux el que la recibirá. Al hacerlo, será él mismo quien se encargará de poner fin al programa que ya no responde, de forma administrativa y autoritaria. Los recursos del sistema consumidos por el proceso bloqueado se liberarán sin precauciones (por ejemplo, los datos en la memoria no se consolidarán en el disco duro).
Algunos ejemplos
Ejemplos de eliminación que requieren conocer el número de proceso
El comando kill requiere que especifiquemos el PID del proceso a completar (el PID = Identificador de proceso, es el número de proceso que le asignó el programador del kernel). Este PID se puede obtener ingresando el comando PD. que enumera los procesos actuales, filtrando (usando el comando grep) por el nombre del programa ejecutado.
ps aux | grep -v grep| grep thunderbird
El comando ps, con las opciones “aux” que le permiten enumerar los procesos que se están ejecutando actualmente. Aquí filtramos el nombre Thunderbird con el comando grep.
El PID del proceso se muestra en la segunda columna. En nuestro ejemplo, tiene el valor 2337.
Para completar correctamente el proceso, ingrese el siguiente comando:
kill 2337
Sin embargo, si estamos aquí probablemente sea porque nuestro programa (aquí Thunderbird) ya no responde, y no podemos cerrarlo pulsando en la cruz de su ventana. En este caso, ingresaremos el siguiente comando:
kill -9 2337
Enviar la señal SIGKILL (-9) con el comando kill para finalizar con autoridad un proceso que no responde.
Este comando envía la señal SIGKILL que indicará al programador del kernel de Linux que finalice el programa recalcitrante.
Un método para evitar determinar el número de proceso antes de cerrar un programa que no responde en Linux desde la línea de comando
El comando Mátalos a todos tiene como objetivo enviar una señal como lo hace kill, pero esta vez no está dirigido a un número de proceso: apunta a todos los procesos que ejecutan un comando determinado. Además, tenga en cuenta que, al igual que con el comando Kill, se le proporcionará un número de señal para enviar.
killall thunderbird
El comando anterior finalizará limpiamente todos los procesos que ejecutan el programa Thunderbird.
Si el programa se muestra reacio, Podemos, como con Kill, enviar la señal SIGKILL. ingresando el siguiente comando:
killall -9 thunderbird
Enviar la señal SIGKILL (-9) con el comando killall que finalizará con autoridad TODOS los procesos que ejecutan el comando Thunderbird.
Sin embargo, tenga cuidado, incluso si el comando killall es práctico porque no es necesario determinar el número del proceso que se va a eliminar. puede tener efectos indeseables. En efecto, su uso correrá a costa del riesgo de finalizar abruptamente procesos que no se bloquearonya que killall envía la señal a todos los procesos que ejecutan un programa determinado.
Dicho esto, en nuestro ejemplo con Thunderbird, no hay problema, porque Thunderbird está diseñado para ser ejecutado por un solo proceso. Este no es siempre el caso, especialmente con los programas de servidor, que pueden configurarse para multiplicar procesos a medida que aumenta la carga.
Si no quieres perderte nuestros nuevos artículos, síguenos en noticias de Google
Si deseas encontrar artículos similares a El comando Kill en Linux para cerrar software bloqueado, te sugerimos revisar la categoría Linux.
Deja una respuesta