¿Qué significan los valores de la columna STAT en ps?

163

En la columna STAT de ps hay una carga de letras que realmente no tienen mucho sentido. ¿Qué quieren decir?

Aquí hay un ejemplo de ps aux | head:

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0  27176  2960 ?        Ss   Sep20   0:02 /sbin/init
root         2  0.0  0.0      0     0 ?        S    Sep20   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S    Sep20  13:05 [ksoftirqd/0]
root         5  0.0  0.0      0     0 ?        S<   Sep20   0:00 [kworker/0:0H]
root         7  0.0  0.0      0     0 ?        S<   Sep20   0:00 [kworker/u:0H]
root         8  0.0  0.0      0     0 ?        S    Sep20   2:16 [migration/0]
root         9  0.0  0.0      0     0 ?        S    Sep20   0:00 [rcu_bh]
root        10  0.0  0.0      0     0 ?        S    Sep20  20:08 [rcu_sched]
root        11  0.0  0.0      0     0 ?        S    Sep20   0:07 [watchdog/0]
root        12  0.0  0.0      0     0 ?        S    Sep20   0:05 [watchdog/1]
root        13  0.0  0.0      0     0 ?        S    Sep20   2:21 [ksoftirqd/1]
root        14  0.0  0.0      0     0 ?        S    Sep20   1:00 [migration/1]
Oli
fuente

Respuestas:

266

man ps tiene todas las respuestas, bajo el encabezado "CÓDIGOS DE ESTADO DEL PROCESO":

PROCESS STATE CODES
       Here are the different values that the s, stat and state output specifiers (header "STAT" or "S") will display to describe the state of a process:
       D    uninterruptible sleep (usually IO)
       R    running or runnable (on run queue)
       S    interruptible sleep (waiting for an event to complete)
       T    stopped, either by a job control signal or because it is being traced.
       W    paging (not valid since the 2.6.xx kernel)
       X    dead (should never be seen)
       Z    defunct ("zombie") process, terminated but not reaped by its parent.

       For BSD formats and when the stat keyword is used, additional characters may be displayed:
       <    high-priority (not nice to other users)
       N    low-priority (nice to other users)
       L    has pages locked into memory (for real-time and custom IO)
       s    is a session leader
       l    is multi-threaded (using CLONE_THREAD, like NPTL pthreads do)
       +    is in the foreground process group.
Oli
fuente
19
Llego a esta respuesta con bastante frecuencia como referencia
saltamontes el
1
Curiosamente me sale una "U" como código de estado que no parece estar documentado en ningún lado. ¿Alguna idea de lo que eso significa?
Tom
2
¿Líder de sesión?
Marco Marsala
66
@MarcoMarsala Donde la ID de sesión del proceso es la misma que su ID de proceso. Básicamente significa que ese fue el primer proceso en la sesión. Por lo general, es un terminal de inicio de sesión como bash o X. Los procesos de agrupación como las sesiones permiten una limpieza fácil cuando finaliza el proceso líder. Es similar a un padre.
Oli
2
@Oli: se agregó uno nuevo en 2017, I = Inactivo: unix.stackexchange.com/questions/462098/… .
slm