Cómo gestionar procesos con el comando ps en Linux

Cómo gestionar procesos con el comando ps en Linux

Cuando ejecutas cualquier comando o una aplicación en Linux estás creando un proceso en el sistema. Es decir, un proceso es como poner un programa en memoria para su ejecución. Al crearse, también se crearán una serie de características asociadas al proceso, como son la prioridad, el identificador o información sobre el usuario que lo ha ejecutado. Con el comando “ps” verás como ver toda esta información de los procesos en Linux.

Cuando un sistema Linux se está ejecutando, por defecto ya tendrá creados algunos procesos como el kernel, que se encargará de manejar la comunicación entre el hardware y el software, es decir entre la máquina física con sus componentes, y el sistema operativo.

Recuerda que puedes acceder al curso gratuito de AprendoLinux que ofrezco en mi academia, con el que podrás conseguir descuentos para futuros cursos y recursos que ofrezco en la web.

Monitorizar procesos con top

En este mismo blog te explico varias formas de monitorizar los procesos en tu sistema de Linux, con varias herramientas que aportan mucho valora la información. Pero tienes que saber que por defecto, ya puedes monitorizar los procesos de tu equipo con herramientas como top.

Imagen del comando top

Cuando lanzas el comando top puedes ver información de los procesos que se están ejecutando en tu equipo ¡en tiempo real! Es decir podrás ver todos los procesos que están corriendo en tu sistema operativo en este momento y la lista se actualiza cada pocos segundos. Además puedes ver la información de lo que consume de CPU y de Memoria cada uno de estos procesos, por lo que puedes revisar si ves algún proceso que está bloqueando o relentizando tu sistema.

Si dentro del sistema de monitorización top decides que quieres matar (suena fuerte pero en sistemas cuando paras un proceso, se dice que lo matas) un proceso, debes quedarte con la información de su PID (el número que aparece en la primera columna) y luego seleccionar la tecla “k”, escribir el PID y enviar la señal 9 (sigkill) o la señal 15 (sigterm). La primera mata el proceso sin dejar testigos, mientras que la segunda, le pide amablemente al proceso que termine.

Para salir del el sistema top bastará con que utilices la tecla “q”.

Listar procesos en Linux con ps

Para tener una visión general de todos los procesos que se están ejecutando en este momento en tu sistema de Linux, puedes lanzar el comando “ps”. Eso si, tendrás que utilizar las opciones adecuadas si quieres obtener la información adecuada. En caso de ejecutar solo ps tendrás algo como esto:

jaime@aprendolinux:~/shell_scripts$ ps 
    PID TTY          TIME CMD
 310912 pts/2    00:00:00 bash
 315232 pts/2    00:00:00 ps

Lo que significa que en este mismo terminal tan solo tienes abierto el bash (que es el intérprete de comandos que estas utilizando en la terminal) y el comando “ps” que acabas de ejecutar.

Para ver más información, puedes utilizar diferentes opciones. Te voy a explicar solo las principales, pero puedes buscar en el manual de Linux más información.

Opción ps -a

Esta opción permite obtener los procesos de todos los usuarios del sistema, pero hay que combinarlo con otras opciones como “x”. En caso contrario tan solo dará una breve información sobre los procesos del usuario que ha lanzado el comando y poco más.

En caso de no tener el símbolo “-” delante, hace que se elimine la restricción que se impone sobre el conjunto de todos los procesos que solo permiten obtener información del propio usuario.

Una descripción alternativa es que esta opción hace que ps liste todos los procesos con un terminal (tty), o que liste todos los procesos cuando se usa junto con la opción x.

Por tanto, NO USAR POR SEPARADO.

Opción ps -x

Cuando se usa esta ipción, se elimina la restricción del estilo BSD por la que solo se listarían los procesos que tienen una tty. El conjunto de procesos seleccionados de esta manera se suma al conjunto de procesos seleccionados por otros medios.

Una descripción alternativa es que esta opción hace que ps liste todos los procesos de su propiedad (mismo EUID que el usuario que lanzó el comando ps), o que liste todos los procesos cuando se usa junto con la opción a.

Por tanto, TAMPOCO USAR POR SEPARADO.

Opción ps -f

Es una forma de mostrar la jerarquía de los procesos que se están ejecutando. Es decir, cuando un proceso necesita o llama a nuevos procesos durante su ejecución, al utilizar esta opción podemos ver claramente cual es el proceso padre de cada uno de ellos.

Aquí te enseño un ejemplo de como se vería esta opción en la terminal.

jaime@aprendolinux:~$ ps f
    PID TTY      STAT   TIME COMMAND
 445125 pts/0    S<s    0:00 bash
 487039 pts/0    S<+    0:00  \_ ssh srv
 275062 pts/1    S<s    0:00 bash
 275066 pts/1    S<+    0:00  \_ ssh srv
 163505 pts/3    S<s    0:00 bash
 497778 pts/3    R<+    0:00  \_ ps f
   3300 tty2     SNsl+   0:00 /usr/libexec/gdm-x-session --run-script env GNOME_SHELL_SESSION_MODE=pop /usr/bin/gnome-session --session=pop
   3316 tty2     SNl+   0:00  \_ /usr/libexec/gnome-session-binary --session=po

Combinación de opciones con comando ps en Linux

Si utilizamos una combinación de estas opciones del comando “ps”, podemos ver de una forma mucho más clara y limpia los procesos que se están ejecutando en nuestro sistema.

Así además podemos saber los identificadores de cada uno de los procesos y también veremos los que dependen unos de otros.

jaime@aprendolinux:~$ ps auxf
USER   PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root     2  0.0  0.0      0     0 ?        S    ene09   0:00 [kthreadd]
root     3  0.0  0.0      0     0 ?        I<   ene09   0:00  \_ [rcu_gp]
root     4  0.0  0.0      0     0 ?        I<   ene09   0:00  \_ [rcu_par_gp]
root     5  0.0  0.0      0     0 ?        I<   ene09   0:00  \_ [slub_flushwq]
....
jaime  505  0.0  0.0  20036  4304 pts/3    S<s  ene13   0:00  |   \_ bash
jaime  825  0.0  0.0  23092  3952 pts/3    R<+  14:17   0:00  |   |   \_ ps auxf
jaime  962  0.0  0.0  20036  4164 pts/1    S<s  ene16   0:00  |   \_ bash
jaime  966  0.0  0.0  26716  7452 pts/1    S<+  ene16   0:00  |       \_ ssh srv

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *