Was bedeuten die STAT-Spaltenwerte in ps?

163

In der Spalte STAT von ps gibt es eine Menge Buchstaben, die nicht wirklich sinnvoll sind. Was meinen sie?

Hier ist ein Beispiel für 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
quelle

Antworten:

266

man ps hat alle Antworten unter der Überschrift "PROCESS STATE CODES":

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
quelle
19
Ich komme zu dieser Antwort ziemlich oft als Referenz
Heuschrecke
1
Interessanterweise bekomme ich ein "U" als Statuscode, der nirgendwo dokumentiert zu sein scheint. Irgendeine Idee was das bedeutet?
Tom
2
Sitzungsleiter?
Marco Marsala
6
@MarcoMarsala Dabei stimmt die Sitzungs-ID des Prozesses mit der Prozess-ID überein. Dies bedeutet im Wesentlichen, dass dies der erste Prozess in der Sitzung war. In der Regel handelt es sich um ein Anmeldeterminal wie bash oder X. Durch Gruppieren von Prozessen wie Sessions können Sie nach Abschluss des Leader-Prozesses einfach bereinigen. Es ist einem Elternteil ähnlich.
Oli
2
@Oli - 2017 wurde eine neue hinzugefügt, I = Idle - unix.stackexchange.com/questions/462098/… .
Slm