Apa nilai kolom STAT dalam ps artinya?

163

Di kolom STAT ps ada banyak surat yang benar-benar tidak masuk akal. Apa yang mereka maksud?

Ini adalah contoh dari 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
sumber

Jawaban:

266

man ps memiliki semua jawaban, di bawah tajuk "PROSES 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
sumber
19
Saya sampai pada jawaban ini cukup sering sebagai referensi
belalang
1
Menariknya saya mendapatkan "U" sebagai kode negara yang tampaknya tidak didokumentasikan di mana pun. Adakah yang tahu apa artinya itu?
Tom
2
Pemimpin sesi?
Marco Marsala
6
@MarcoMarsala Di mana ID sesi proses sama dengan ID prosesnya. Ini pada dasarnya berarti itu adalah proses pertama dalam sesi ini. Biasanya terminal login seperti bash, atau X. Proses pengelompokan seperti sesi memungkinkan pembersihan mudah ketika proses leader berakhir. Ini mirip dengan orangtua.
Oli
2
@Oli - yang baru ditambahkan pada tahun 2017, I = Idle - unix.stackexchange.com/questions/462098/… .
slm