「トップ」を実行し、実行中のすべてのプロセスを表示するとき、私は常にすべてが実際に何を意味するのかを知りたいと思っていました。例えば実行中のプロセスのすべてのさまざまな1文字の状態コード(R =実行中、S =スリープ中など)
これはどこにありますか?
マニュアルページには、状態コードのマッピング先が記載されていますが、実際の意味は記載されていません。トップマニュアルページから:
'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
を使用できます