Estados de los procesos en Linux

Vamos a ver un resumen sobre los estados de los procesos en Linux.

 
En este artículo:

 

 

 

Con el comando

man ps

podemos ver el manual completo sobre el comando ps; este comando muestra una captura de los procesos actuales.
 

Opciones del comando ps (mostrar los procesos actuales del sistema)

 

Primero, las opciones básicas del comando ps

con:

ps --help simple

o

ps --ayuda simple

-A, -e todos los procesos
-a todos con tty, a excepción de los lideres de la sesión, a todos con tty, incluyendo los otros usuarios
-d, todos a excepción de los lideres de la sesión
-N, –anular negar la selección
r sólo los procesos que se ejecutan
T sólo los procesos en este terminal
x control de procesos sin ttys
 

 

Para mostrar otras opciones del comando ps tenemos estos parámetros:

 

ps --help simple|list|output|threads|misc|all

 

Si el idioma de tu distro Linux está en español, entonces será por ejemplo:

ps --ayuda simple

o

ps --ayuda lista

 

Y aquí la tabla en Ingles:

ps --help

 

********* simple selection *********

-A all processes
-N negate selection
-a all w/ tty except session leaders
-d all except session leaders
-e all processes
T all processes on this terminal
a all w/ tty, including other users
g OBSOLETE — DO NOT USE
r only running processes
x processes w/o controlling

 

********* selection by list *********

-C by command name
-G by real group ID (supports names)
-U by real user ID (supports names)
-g by session OR by effective group name
-p by process ID
-s processes in the sessions given
-t by tty
-u by effective user ID (supports names)
U processes for specified users
ttys t by tty
 

 

Estados de un proceso que mostrará la columna STATUS del comando ps

 

D   Uninterruptible sleep – (En pausa ininterrumpible). Por ejemplo por alguna operación IO.

R   Running – el proceso se encuentra ejecutándose

S   interruptible sleep Pausa interrumpible (espera que se complete un evento )

T   Stopped parado

X   Dead – muerto. Esto nunca deberíamos verlo, ya que si el proceso está muerto, no aparecerá ..

Z   Defunct  -Proceso Zombie, terminado pero su proceso padre sigue vivo, y no ha detectado que el proceso ya murió.

columna STAT - estados proceso Linux

 

Además de los estados (columna STAT, representada por la S mayúscula), podremos ver las columnas:

 

  • PID  número identificador del proceso
  • T   tiempo de uso de la cpu que ha acumulado el proceso
  • TTY   terminal asociada al proceso
  • NI  valor NICE del proceso (su prioridad).

Realmente existen más columnas en el listado de procesos.

 

SI ejecutamos ps aux, podremos ver más procesos del sistema y otros detalles:

ps aux - procesos Linux
Explicación del comando ps y los parámetros aux:

  • a  :  muestra todos los procesos en ejecución, incluso los de otros usuarios.
  • u  :  muestra más detalles sobre los procesos.
  • x  :  muestra procesos que no tienen asociada una TTY.

 

 

Otras columnas que vemos al ejecutar el comando ps aux

 
En la captura anterior podemos apreciar que se pueden ver otras columnas que previamente, con el comando ps -S, no veíamos:

  • USER  : el usuario efectivo (el usuario con el que estamos accediendo).
  • PID  : la ID del proceso.
  • %CPU  : tiempo de la CPU utilizado, dividido por el tiempo que el proceso ha estado ejecutándose.
  • %MEM  : relación entre el tamaño del proceso y la memoria física de la máquina.
  • VSZ  :  uso de memoria virtual del proceso.
  • RSS  :  la memoria física (no SWAP) que un proceso ha utilizado.
  • TTY  :  terminal de control asociada con el proceso.
  • STAT  :  código de estado del proceso.
  • START  :  hora de inicio del proceso.
  • TIME  :  tiempo total de uso de la CPU.
  • COMMAND  :   nombre del ejecutable/comando.

 

 

Ejemplos de Estados de un proceso

 
Vamos a intentar comprender los diferentes estados.

Comenzamos listando los procesos existentes y sus estados mediante el comando:

ps -S

estado de un proceso Linux

 

  • Vemos que el estado S muestra una pausa interrumpible
  • Aquí nuestro bash shell está esperando que se complete su hijo 31639
  • el proceso número 31639 está en estado de ejecución
  • s , muestra que espera al lider de la sesión
  • + muestra que 31639 está corriendo en primer plano

 

 

Ahora vamos a generar un retraso con el comando sleep:

sleep +30

y a continuación pulsamos Ctrl + Z, con lo que enviaremos la señal SIGSTOP.

Podemos ver claramente el Status T

proceso Linux en estado parado STOPPED

El proceso está parado pero no terminado.

Podemos continuar este proceso parado.

 

Vamos a hacer lo mismo pero usando el comando seq, que imprime secuencias de números por pantalla

seq 30000

Imprimirá números, del 1 al 30000

Si en medio de la impresión pulsamos de nuevo Ctrl +Z, el proceso quedará parado,

parando un proceso Linux con Control+Z

 

y podremos volver a recuperarlo con el comando fg, y el comando seq seguirá imprimiendo la secuencia desde el número que se quedó.

continuar un proceso parado en primer plano, con el comando fg