Monitoriza los procesos en Linux

Veamos algunos comandos para monitorizar los procesos que eventos que crea el kernel linux en nuestro sistema

Las herramientas para la línea de comandos más comunes en nuestras distribuciones GNU/Linux para tener un control de los procesos del sistema son ps, pstree, pidof o pgrep que forman parte del conjunto de herramientas procps-ng (que incluye alguna otra herramienta como free o watch).

Los procesos son eventos que son gestionados por el kernel del sistema, en este caso Linux. Los procesos son creados cuando lanzas una aplicación o se ejecutan en segundo plano para mantener la hora del sistema, monitorizar el sistema de archivos.

A cada proceso del sistema se le asigna un número o identificador también conocido como IP o PID, que será la manera de gestionar dicho proceso, parándolo, matándolo, conocer quién lo creó, etc.

Estas herramientas pueden ser muy útiles a la hora de gestionar procesos de aplicaciones que se quedan colgadas, o se «vuelven locas» haciendo que el sistema falle.

Este artículo es una traducción/adaptación del artículo en inglés escrito por Seth Kenlon para la web opensource.com y publicado bajo una licencia CC-by-sa.

Ya vimos en el blog unas cuantas herramientas externas para monitorizar tu sistema de una forma más gráfica desde la línea de comandos:

Pero con las herramientas que ofrece procps-ng, podremos ir más al detalle, encontrando el identificador de un proceso, ya sabes el ID o PID. Para ello tenemos herramientas como ps, pstree, pidof o pgrep.

Encontrar el PID de un programa en ejecución

En la ocasión en la que quieras saber cual es el identificador del proceso ID o PID de una aplicación específica que sabes que se está ejecutando, puedes utilizar pidof o pgrep para encontrar esos procesos.

El comando pidof devuelve los PID de un comando, buscando por el nombre exacto. Como yo utilizo zsh, puedo saber los PID que este ha creado mediante:

$pidof zsh
4039 4038 4011 4005

El comando pgrep permite la búsqueda con expresiones regulares. Por ejemplo al buscar con pidof x11 no encuentra nada, porque hay que proporcionarle el nombre exacto.

Pero una búsqueda con pgrep que contenga la cadena x11 sí nos proporciona resultados:

pgrep .x11                                                                                     
1242
1381
1723

Obtener el nombre del proceso por el PID

Si conces el PID de un proceso, pero no sabes qué comando ha lanzado ese proceso, puedes realizar una «búsqueda inversa» mediante el comando ps:

ps 4011
PID TTY STAT TIME COMMAND
4011 pts/0 S 0:00 /bin/zsh

Listar todos los procesos

El comando ps muestra un listado de los procesos. Puedes verlos todos con la opción -e. Pero si solo quieres ver los creados por tu usuario (o el usuario que desees) puedes hacerlo con la opción -U <nombre>.

ps -U victorhck

Pero mejor que este comando, quizás es pstree, que nos muestra la salida de los procesos, pero en forma de árbol viendo qué proceso fue creado por quién, etc. Además también podemos hacer que nos muestre el número del proceso:

pstree -U victorhck --show-pids

Matando un proceso

Ahora que ya sabemos cómo conseguir el PID de un proceso, podremos «matarlo» para acabar con él, si este está creando conflictos en nuestro sistema y no responde a otras formas de acabar con el.

Por ejemplo si queremos matar un proceso, simplemente escribiremos:

kill <número_PID>

Y esto sería suficiente para terminarlo instantáneamente.


Espero que te haya resultado útil el artículo. ¿Ya conocías estos comandos? ¿Los utilizabas? ¿uilizas otros? Utiliza los comentarios para compartir tus experiencias y opiniones.

5 comentarios sobre “Monitoriza los procesos en Linux

  1. Yo uso siempre top y para matar kill -9 (no sé de donde saqué el -9 pero en algún sitio lo vería hace la tira de años, supongo que es Kill pero ni idea)

  2. El comando pgrep no lo conocía, muy útil, gracias. A pidof y pstree los había utilizado en scripts para DWM (reiniciar un proceso).

    Para matar procesos, sin son varios, generalmente uso Htop, por una cuestión de comodidad. Cuando se trata de comandos utilizo pkill -9 nombre_programa. El valor numérico viene de la opción signal (pkill –signal numero_señal nombre_proceso), en este caso 9 corresponde a SIGKILL (señal de matar).

    Con el comando: man 7 signal se pueden ver todas la señales admitidas. El 7 después de man, alude a SIGNAL (señales de entrada), de lo contrario se mostrará SIGNAL(2) manejo de señales en ANSI C (#include <signal.h>).

    Para el comando kill con: kill -l lista todas la señales, 9) SIGKILL, obviamente. Yo uso pkill -9 en lugar de kill -9 porque en el primer caso utilizo el nombre de la aplicación o proceso, no el número de IDs. Aunque con killall también se resuelve todo, es cuestión de cada uno.

    Saludos.

Me gustaría saber tu opinión. Deja un comentario (Puedes usar MarkDown)

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.