実行して実行top
中のすべてのプロセスを確認するとき、私は常にすべてが実際に何を意味するのかを知りたいと思っていました。たとえば、実行中のプロセスのすべてのさまざまな1文字の状態コード(R =実行中、S =スリープ中など)
これはどこにありますか?
実行して実行top
中のすべてのプロセスを確認するとき、私は常にすべてが実際に何を意味するのかを知りたいと思っていました。たとえば、実行中のプロセスのすべてのさまざまな1文字の状態コード(R =実行中、S =スリープ中など)
これはどこにありますか?
man ページには、状態コードが何にマッピングされているかが記載されていますが、実際の意味は記載されていません。top
マニュアルページから:
'D' = uninterruptible sleep
'R' = running
'S' = sleeping
'T' = traced or stopped
'Z' = zombie
'R' が最も簡単です。プロセスは実行する準備ができており、CPU を使用する順番が来るたびに実行されます。
「S」と「D」は 2 つのスリープ状態で、プロセスが何かが起こるのを待っています。違いは、'S' はシグナルによって中断できるのに対し、'D' は中断できないことです (通常、プロセスがディスクを待っているときに見られます)。
「T」はプロセスが停止している状態で、通常はSIGSTOP
またはを介して行われSIGTSTP
ます。デバッガー ( ) で停止することもできますptrace
。その状態が表示されるのは、通常、Ctrl+Zを使用してバックグラウンドでコマンドを実行したためです。
'Z' はプロセスが死んでいる (実行が終了した) 状態であり、残っているのはカーネル上でそれを記述した構造だけです。親プロセスが終了コードを取得するのを待っていますが、それ以上ではありません。親プロセスが終了すると、それは消えます。
このコマンドman top
を使用して、状態を検索できます。
D = uninterruptible sleep
I = idle
R = running
S = sleeping
T = stopped by job control signal
t = stopped by debugger during trace
Z = zombie