Cómo matar o finalizar un proceso de Linux: la guía definitiva

Los sistemas operativos de multiprocesamiento como emplean varios métodos para maximizar la utilización de la CPU. Un proceso es simplemente un programa en ejecución. Dado que habrá más de un proceso de Linux ejecutándose en un momento dado, la gestión de procesos en Linux es extremadamente crucial. Los usuarios a menudo enfrentan problemas como la limitación de recursos de la CPU cuando ejecutan demasiados programas. Situaciones como esta surgen cuando la CPU no puede manejar el creciente número de procesos. Aunque esto no depende completamente de la potencia de su CPU, lidiar con procesos colgados o zombies puede ser bastante frustrante. Para ayudarlo a mitigar estos sucesos, describimos algunas formas estándar de eliminar estos procesos.

Dominar la gestión de procesos que no responden en Linux

Aprenderá varias formas de finalizar un proceso de Linux que no responde en absoluto. Si viene de Windows, es posible que esté familiarizado con Ctrl + Alt + Suprimir . Del mismo modo, los usuarios de Mac tienen el método Comando + Opción + Escape para eliminar procesos congelados. Linux es mucho más versátil que sus contrapartes y ofrece más de un método para abordar procesos muertos / que no responden.

Diferentes métodos para acabar con un proceso de Linux muerto

Principalmente describiremos dos métodos para matar procesos zombies. Usaremos para el primer método. Para esto, primero necesitaremos identificar la identificación del proceso. Una vez obtenido con éxito, podemos usar este PID para matar el programa enviando señales específicas a ese PID.

También aprenderá cómo llevar a cabo estos trabajos Kill Linux desde la interfaz gráfica de usuario o la ventana X . Vamos a aprovechar la aplicación ‘System Monitor’ disponible en Ubuntu para esto. Aunque esta es una aplicación GNOME, hay herramientas similares disponibles para otros .

Terminar un proceso que no responde desde la línea de comandos

Hay varias herramientas para terminar un proceso que no responde o colgado desde la línea de comando, incluyendo kill , pkill y killall . Estos comandos funcionan enviando señales específicas a estos procesos que no responden. Necesitará la identificación del proceso o la información PID para poder enviarles la señal de terminación requerida.

gestión de procesos en Linux

El PID o ID de proceso es un número único que identifica un proceso. Estos son creados por el kernel de Linux durante el tiempo de ejecución, y el programador de procesos controla sus actividades de CPU. Por lo tanto, cada vez que invoca una aplicación, el kernel generará primero los procesos necesarios y les asignará estos valores PID únicos. Puede haber varios PID asociados con un proceso. Además, cada proceso tiene un proceso principal único con un PPID (ID de proceso principal) único.

Entonces, si puede encontrar este PPID, entonces podrá enviar una señal de interrupción utilizando programas diseñados para este propósito. A continuación, aprenderá cómo verificar los procesos en ejecución en Linux e identificar su PPID desde la terminal.

Descubra la información de PPID

Puede averiguar el PPID de un proceso utilizando varios comandos de gestión de procesos en Linux, como pidof , pstree y pgrep . Examinemos uno por uno y veamos cómo obtener el PID de un proceso de Linux.

Método 1: uso del comando ps

El comando ps en Linux muestra todos los procesos en ejecución junto con otra información relacionada con el proceso, como el PID en la terminal. Podemos usar este comando para listar todos los procesos y luego filtrar un proceso específico usando . Debería mostrarnos la información de identificación del proceso que nos interesa.

$ nano > /dev/null &
$ ps aux | grep "nano"

Primero, hemos invocado un editor de texto de Linux en segundo plano. Luego, usamos el comando ps junto con el comando grep para averiguar el PPID de este editor. La salida puede contener varios identificadores de proceso, pero solo nos interesa el primero, ya que es nuestro PPID. También podemos usar para encontrar esta información, como se muestra a continuación.

$ ps aux | awk '/nano/ {print $2}'

Este comando es más flexible ya que suprime toda la información irrelevante. Solo mostrará la información PPID que estamos buscando.

lista zombie ps

Método 2: uso del comando pstree

El comando pstree nos proporciona una vista en forma de árbol de todos los procesos en ejecución. Proporciona una vista gráfica de la lista de tareas de Linux desde la ventana del terminal. Puede ver el PPID así como toda la información PID de un proceso usando este comando. Consulte los ejemplos a continuación para aprender cómo aprovechar pstree para encontrar el PPID de un proceso específico.

$ nano > /dev/null &
$ pstree -p | grep 'nano'
$ pstree -p | awk '/nano/ {print $NF}'

Primero, hemos generado un proceso en segundo plano usando el primer comando. El segundo comando luego recupera el PPID de este proceso usando . Finalmente, el tercer comando nos muestra cómo recuperar este valor usando el comando awk.

Método 3: usar el comando pgrep

El comando pgrep es uno de los comandos de gestión de procesos más sencillos de Linux. Verifica la lista de todos los procesos en ejecución e imprime el PPID de un proceso dado en la salida estándar o en el terminal en nuestro caso. Funciona realizando una coincidencia de expresiones regulares y es muy adecuado para .

$ nano > /dev/null &
$ pgrep 'nano'

Hemos generado el proceso nano de manera similar a los ejemplos anteriores. Entonces hemos obtenido su PPID usando el comando pgrep. Una vez que obtenemos este valor, podemos realizar el trabajo de eliminación de Linux muy fácilmente.

Método 4: Usar el comando pidof

El comando pidof es otra forma sencilla pero útil de determinar el PPID de un proceso de Linux. Muestra tanto el PPID como todos los demás PID asociados con un proceso. Consulte el examen a continuación para ver cómo usar esto en la práctica.

$ nano > /dev/null &
$ pidof nano
$ pidof -s nano

Cuando use el comando pidof para verificar los procesos en ejecución en Linux, a menudo verá varios PID. Por lo general, en tales casos, el primer o el último número es el PPID, dependiendo de si están en orden ascendente o descendente. Puede usar la opción -s de pidof para mitigar esto. Mostrará solo el valor de PPID.

pgrep pidof pstree

Método 5: usar el comando superior

El comando superior proporciona una vista en tiempo real de todos los procesos en ejecución en sistemas operativos similares a Unix. Puede usar esto para mostrar la lista de tareas de Linux en su terminal y encontrar la información PID de un proceso específico.

$ top

Utilice los siguientes comandos para recuperar el PPID de un proceso en particular de la salida del comando superior.

$ nano > /dev/null &
$ top -n1 -b | grep 'nano'
$ top -n1 -b | awk '/nano/ {print $1}'

Dado que top proporciona salida en tiempo real en lugar de descargar datos estáticos al terminal, hemos utilizado la opción -n1 y -b para imprimir la salida estática. Luego, puede recuperar la información PPID utilizando el comando grep o .

Elimine el proceso de Linux que no responde

Puede utilizar cualquiera de los métodos anteriores para recuperar el PPID del proceso que no responde. Una vez que obtenga esto, es hora de matar el proceso por completo. Hay varios comandos que nos permiten hacer esto, como kill , pkill y killall . Veremos cómo funcionan uno a uno en los siguientes apartados.

Método 1: uso del comando kill

El comando kill es ampliamente utilizado por los administradores de Linux debido a su simplicidad y acciones robustas. Toma el PID del proceso y una señal. El kernel mata / detiene la ejecución del proceso basándose en esta señal. Puede usar el siguiente comando para ver todas las señales disponibles para el comando kill.

$ kill -l

Como puede ver, kill ofrece 64 señales diferentes. Sin embargo, solo discutiremos dos de ellos en esta guía. Éstas son la señal 9 (SIGKILL) y la señal 15 (SIGTERM). SIGTERM o la señal 15 es el método seguro para matar un proceso que no responde. SIGKILL o la señal 9, por otro lado, la fuerza mata un proceso de Linux.

$ kill -9 8631
$ kill -KILL 8631

Los comandos anteriores son equivalentes y forzarán la muerte del proceso que tiene el PID 8631. Ese es el PPID del proceso ‘nano’ en mi sistema. Reemplace esto con el PID del proceso que no responde en su sistema.

$ kill -15 8631
$ kill -TERM 8631

Los comandos anteriores también son equivalentes y eliminarán el proceso con elegancia. Es por eso que puede llevar algún tiempo antes de que se elimine el proceso. Además, es posible que deba agregar sudo antes del comando kill si el proceso es propiedad de un usuario diferente.

matar después de pgrep

Método 2: uso del comando pkill

El comando pkill es uno de los comandos de gestión de procesos más versátiles de Linux. Nos permite eliminar un proceso que no responde en función de su nombre, PID, propietario y otros atributos de tiempo de ejecución. Es una herramienta perfecta para usuarios principiantes o personas que no están familiarizadas con muchos .

$ pkill nano
$ pkill 8631
$ pkill -e nano
$ pkill -f nano

Puede usar cualquiera de los comandos pkill anteriores para matar un proceso zombie / que no responde en Linux. Utilice la opción -e si desea una confirmación sobre el trabajo de eliminación de Linux. El comando pkill también permite a los usuarios enviar señales de terminación específicas.

Método 3: uso del comando killall

El comando killall permite a los usuarios eliminar procesos que no responden según sus nombres. Es más fácil de usar, pero puede plantear problemas si no se tiene cuidado. Dado que killall termina los procesos en función de los nombres, siempre existe la posibilidad de que termine matando un proceso por casualidad. Por ejemplo, si hay diferentes versiones de nano disponibles en su sistema, el primer ejemplo las matará a todas.

$ killall nano
$ killall --verbose nano
$ killall --interactive nano
$ killall --signal KILL nano

El primer ejemplo muestra el uso básico del comando killall en Linux. El segundo comando informará si el trabajo de finalización se realizó correctamente o no, y el tercer comando pedirá confirmación al usuario antes de finalizar el proceso. Por defecto, killall usa la señal SIGTERM para matar procesos. Sin embargo, puede especificar la señal manualmente, como se muestra en el último ejemplo.

Método 4: uso de prácticos one-liners

La verdadera belleza de Linux radica en el hecho de que permite a los usuarios crear combinaciones de comandos sofisticadas en función de sus necesidades. Para demostrar esto, hemos esbozado algunas frases ingeniosas en la sección.

$ nano > /dev/null &
$ kill -9 $(pgrep nano)
$ ps aux | grep -e 'nano' | awk '{print $2}' | xargs kill -9

En el primer ejemplo, usamos la interpolación de shell para pasar el PID del proceso ‘nano’ al comando kill de Linux. El segundo ejemplo utiliza varios y redireccionamiento de E / S para finalizar el proceso. Puede seleccionar sus propias frases ingeniosas una vez que se sienta cómodo con la terminal de Linux.

comandos de muerte de un trazador de líneas

Método 5: matar varios procesos utilizando scripts de shell de Linux

A veces, los usuarios pueden querer terminar más de un proceso. Podemos automatizar fácilmente estas tareas escribiendo scripts de shell simples. Si está interesado en este tema, . El siguiente script recuperará el PPID de los procesos que desea matar y luego los terminará usando señales de interrupción.

$ nano proc-killer.sh
#!/usr/bin/env bash

for pro in "[email protected]"
do
    pid=$(pgrep $pro | head -1)
    echo $pid

    comm="kill -9 $pid"
    eval $comm
done

Ahora, guarde este archivo y agregue el permiso de ejecución emitiendo el siguiente comando.

$ chmod +x proc-killer.sh

Ahora puede pasar a este script el nombre de los procesos que desea terminar.

$ ./proc-killer.sh nano gedit vlc

Simplemente reemplace los argumentos con los nombres de los procesos de Linux que no responden en su sistema.

proceso de secuencia de comandos asesino

Terminar un proceso que no responde desde la GUI

También puede finalizar un proceso que no responde desde la interfaz gráfica de usuario o la ventana X. Discutimos dos métodos para hacer esto en la siguiente sección.

Método 1: uso de la aplicación xkill

Las distribuciones modernas de Linux utilizan la ventana gráfica X para proporcionar a los usuarios una experiencia gráfica elegante. Existe una herramienta simple llamada xkill que permite a los usuarios cerrar una ventana GUI que no responde. Es posible ya que, en Linux, la ventana de título de una aplicación está separada de la propia aplicación.

Simplemente vaya a su emulador de terminal Linux y escriba xkill. Transformará el cursor del mouse en un botón X, que se puede usar para eliminar cualquier ventana de la GUI.

$ xkill

Ahora, todo lo que necesita hacer es simplemente hacer clic en la barra de la ventana de la aplicación que no responde, y se eliminará y desaparecerá instantáneamente.

Mata el proceso de Linux usando xkill

Método 2: uso de la aplicación System Monitor en Ubuntu

La mayoría de vienen con algún tipo de herramientas de monitoreo de GUI que permiten a los usuarios terminar gráficamente un proceso de Linux suspendido. Por ejemplo, la aplicación System Monitor en Ubuntu nos permitirá terminar un proceso que no responde de manera intuitiva. Simplemente puede seleccionar el proceso muerto de la lista de procesos y eliminarlo haciendo clic derecho en el proceso y seleccionando la opción de eliminación.

matar el proceso de Linux desde el monitor del sistema

Hay muchas más alternativas a esta aplicación, y estamos seguros de que podrá encontrar fácilmente una para su distribución o entorno de escritorio.

Pensamientos finales

Dado que la gestión de procesos en Linux es muy versátil, los usuarios a menudo se sienten frustrados cuando tratan con procesos que no responden. Es por eso que nuestros editores han descrito todas las formas posibles de terminar un proceso de Linux inactivo en esta guía. Después de leer esto, debería poder eliminar cualquier proceso que no responda desde la línea de comandos o desde la GUI. También puede usar cualquiera de nuestros comandos de una sola línea para lidiar con tales molestias en el menor tiempo posible. Además, incluso puede eliminar más de un proceso utilizando nuestro sencillo script de shell. Entonces, con suerte, obtuvo la información que buscaba de nuestra guía.

Leave a Comment

Your email address will not be published. Required fields are marked *