Mundo booleano

imagen de portada de eliminación de linux

En un sistema operativo, hay muchos programas, que pueden ser ejecutados por un usuario o por el propio sistema operativo (como servicios del sistema). Tales programas que se ejecutan en el sistema se llaman «procesos». Por lo general, un proceso termina por sí solo cuando han terminado con su tarea, o cuando se les pide que lo dejen presionando un atajo de teclado o haciendo clic en el botón «Cerrar».

Sin embargo, a veces un proceso puede colgarse o consumir mucha CPU o RAM. En esta situación, querrá «matar» manualmente el proceso. En este artículo, veremos varias herramientas que puede usar para matar procesos en un sistema Linux.

Localizar el proceso para eliminar

Para eliminar un proceso, primero debe localizar los detalles del proceso. Usted puede hacer esto a través de tres comandos — toppspidof y pgrep. Dependiendo de la situación, puede usar uno de estos comandos para este propósito.

Como veremos más adelante en este artículo, puede matar un proceso por su nombre o su ID de proceso (PID). El PID es un número que identifica de forma única un proceso. Matar por el ID de proceso es útil cuando se quiere matar solo un proceso específico. Por otro lado, matar por el nombre del proceso es útil cuando desea matar todas las instancias en ejecución de un programa en particular.

Ubicando el proceso con el comando superior

Primero veremos el comando top. Inicie el comando superior escribiendo:

top

Obtendrá una interfaz interactiva, como se muestra a continuación. Puede navegar por esta lista para encontrar el nombre o el PID del proceso que desea eliminar.

El comando superior que muestra una lista de procesos.

Para navegar por esta lista, puede usar las teclas arriba/abajo. Además, el comando superior también tiene formas de filtrar los procesos por uso de CPU, nombres de usuario y procesos, que puede consultar en esta guía.

La columna de la izquierda contiene el PID del proceso, y el lado derecho contiene el nombre del programa. Como ejemplo, en la captura de pantalla anterior tenemos el proceso vnstatd que se ejecuta con un ID de proceso de 263.

Localizar el proceso con comandos ps y grep

Otra forma de obtener una lista de procesos es ejecutando:

ps aux

En el comando anterior, hemos utilizado las banderas aux que tienen los siguientes significados:

  • a: Mostrar procesos para todos los usuarios
  • u: Mostrar el usuario que está utilizando el proceso
  • x: Mostrar todos los procesos. (Sin esto, ps no mostrará los procesos que se ejecutan en un entorno GUI.)

La salida del comando es similar a la de top. El PID está disponible en la segunda columna de la izquierda, y el nombre del proceso está disponible en la columna de la derecha.

Los resultados del comando "ps aux"."ps aux" command.

La ventaja de usar ps es que fácilmente puede filtrar esta lista con la etiqueta grep comando. Por ejemplo, para encontrar un proceso asociado con el término «vnstat», puede usar:

ps aux | grep -i vnstat

Filtrar procesos con ps y grep, con un resultado positivo.

Aquí, tenemos dos resultados — el vnstatd proceso, así como el grep proceso. Dado que estábamos buscando todas las instancias del término «vnstat», y también estábamos ejecutando grep con «vnstat» como argumento, también obtuvimos grep en los resultados.

Por lo tanto, incluso cuando no hay procesos relacionados con «vnstat» en ejecución, obtendríamos una entrada que mostrara los procesos de filtrado grep:

con ps y grep.

Así que, aunque obtuvimos un resultado, no hay procesos que nos interesen.

Encontrar el PID con pidof y pgrep

El top y psgrep combinación nos permite la búsqueda de procesos. Por otro lado, si conoce el nombre exacto de un proceso, puede usar pidof para encontrar su PID.

Usar pidof es bastante sencillo. Para obtener los PIDs de un proceso con el nombre exacto de «nginx», use:

pidof nginx

Si hay procesos con el nombre exacto de «nginx», obtendrá una lista de PIDs, como se muestra a continuación. Si no hay ninguno, no obtendrá nada como la salida.

El comando pidof

Si usted no sabe el nombre completo, usted puede usar pgrep en lugar de pidof. Por ejemplo, para buscar todos los procesos que contengan «ngin» en algún lugar de su nombre, ejecute:

pgrep ngin

Esto coincidirá con los procesos con el nombre exacto de «nginx», así como con cualquier otro proceso que coincida con los mismos criterios. Para nuestro sistema, observe que obtenemos todos los PIDs que pertenecían a «nginx» en la captura de pantalla anterior.

El comando pgrep.

El pidof ypkill comandos de darle mucha menos información. Como veremos en la siguiente sección, hay algunas circunstancias en las que no se puede matar un proceso. La salida de top y ps contiene información adicional que le ayuda a determinar si realmente puede matar un proceso.

¿Qué procesos puedes eliminar?

Ahora que hemos localizado el proceso, es hora de matarlo. Sin embargo, antes de aprender a hacerlo, hay algunas cosas que necesita saber.

Si eres un usuario normal, puedes eliminar tus propios procesos, pero no los que pertenecen a otros usuarios. Tanto topcomo ps muestran el usuario bajo el que se está ejecutando un proceso. En el caso de top, la segunda columna contiene el nombre de usuario. Con ps aux, la primera columna contiene el nombre de usuario.

Sin embargo, un usuario root puede matar todos los procesos. Puede agregar sudo antes de cualquier comando para ejecutarlo como root, u obtener un shell root escribiendo su, y luego ejecutar el comando.

En Linux, cuando se mata un proceso, se entrega una «señal de terminación» al proceso. Aunque hay muchos tipos diferentes de señales, principalmente tratamos con las señales «SIGTERM» y «SIGKILL». Tienen un valor numérico de 15 y 9 respectivamente. De forma predeterminada, todos los comandos de eliminación de procesos usan «SIGTERM», que permite al programa ejecutar código antes de que salga, lo que le permite terminar»con gracia». Si desea terminar el proceso por la fuerza, puede usar «SIGKILL» en su lugar.

El núcleo Linux mantiene cierta información relacionada con el estado de un proceso. Cuando un proceso termina, el núcleo debe mantener la información disponible, para que el proceso padre pueda averiguar si el proceso hijo fue capaz de completar sus tareas y si terminó por sí solo, o si fue asesinado. Hasta que el padre lo haya hecho, estos procesos» zombis » aparecerán en la lista de procesos. No se puede matar un proceso de este tipo porque es solo una entrada en la lista de todos los procesos, y no tiene un proceso real asociado a él.

Cuando un proceso realiza operaciones de entrada / salida (como leer o escribir en discos), se dice que está en un estado de «suspensión ininterrumpida». No se puede matar un proceso mientras está en este estado.

Puede saber si un proceso está en el estado»zombie «(Z) o»sueño ininterrumpido»(D) mirando la octava columna de la salida topps.

el Asesinato de un proceso de

Hay varios comandos que puede utilizar para matar un proceso de — killkillallpkill y top. Comenzaremos por el más simple: el comando killall.

Matar procesos con el comando killall

El comandokillall es una de las formas más fáciles de matar un proceso. Si conoce el nombre exacto de un proceso, y sabe que no se está ejecutando como otro usuario y que no está en los estados Z o D, puede usar este comando directamente; no es necesario localizar manualmente el proceso como describimos anteriormente.

De forma predeterminada, Por ejemplo, para matar un proceso llamado «firefox», ejecute:

killall firefox

Para matar por la fuerza el proceso con SIGKILL, ejecute:

killall -9 firefox

también puede utilizar la etiqueta -SIGKILL en lugar de -9.

Si quieres matar a los procesos de forma interactiva, puede usar -i así:

killall -i firefox

Si quieres matar un proceso que se ejecuta como un usuario diferente, puede usar sudo:

sudo killall firefox

también puede matar un proceso que ha estado funcionando durante un cierto período de tiempo con el -o y -y banderas. Por lo tanto, si desea eliminar un proceso que se ha estado ejecutando durante más de 30 minutos, use:

killall -o 30m <process-name>

Si desea eliminar un proceso que se ha estado ejecutando durante menos de 30 minutos, use:

killall -y 30m <process-name>

De manera similar, use las siguientes abreviaturas para las unidades de tiempo respectivas:

s seconds
m minutes
h hours
d days
w weeks
M months
y years

Killing processes with the pkill command

Sometimes, you only know part of a program’s name. Como pgreppkill le permite matar procesos en base a coincidencias parciales. Por ejemplo, si quieres matar a todos los procesos que contiene el nombre apache en el nombre, ejecute:

pkill apache

Si desea utilizar una señal SIGKILL en lugar de un SIGTERM, uso:

pkill -9 apache

de Nuevo, también puede usar -SIGKILL en lugar de -9.

Matar procesos con el comando kill

Usar el comando kill es sencillo. Una vez que haya encontrado el PID del proceso que desea eliminar, puede terminarlo usando el comando kill. Por ejemplo, si desea eliminar un proceso que tenga un PID de 1234, use el siguiente comando:

kill 1234

Como mencionamos anteriormente, el valor predeterminado es usar un SIGTERM. Para usar un SIGKILL, use -9 o -SIGKILL como hemos visto antes:

kill -9 1234

Matar procesos con el comando superior

Es muy fácil matar procesos usando el top comando. Primero, busca el proceso que quieres eliminar y anota el PID. Luego, presione k mientras se ejecuta top (esto distingue entre mayúsculas y minúsculas). Te pedirá que ingreses el PID del proceso que quieres eliminar.

Después de introducir el PID, pulse intro. Ahora le preguntará qué señal desea usar para matar el proceso. Si desea usar SIGTERM(15), simplemente presione enter, ya que es la señal predeterminada. Si desea usar SIGKILL(9), escriba 9 y presione entrar.

Si deja el ID de proceso en blanco y presiona enter directamente, terminará el proceso más alto de la lista. Puede desplazarse con las teclas de flecha y cambiar el proceso que desea eliminar de esta manera.

Conclusión

En este post, vimos las diversas formas de matar procesos en Linux. Aprender estos comandos es esencial para la administración y gestión adecuadas del sistema. Si desea explorar más de esos comandos, eche un vistazo a sus respectivas páginas de manual.

Si te ha gustado este post, por favor compártelo 🙂

Deja una respuesta

Tu dirección de correo electrónico no será publicada.