各コマンドがシステムによって解釈されると、一意のプロセス識別番号 (PID) を持つ独立したプロセスが生成され、そのコマンドが実行されます。システムは PID を使って各プロセスの現在の状態を追跡します。
現在実行されているプロセスを調べるには、ps コマンドを使います。ps コマンドでは、ユーザが所有する各プロセスのプロセス識別番号 (PID の下に表示される) の他に、プロセスが起動された端末 (TTY)、現在までにプロセスが使った CPU 時間 (TIME)、プロセスが実行しているコマンド (COMMAND) などが表示されます。
ps コマンドに -l オプションを追加すると、現在実行されているプロセスに関するさまざまな詳細情報 (S の下に表示される各プロセスの状態など) が表示されます。プロセスの状態を示すコードの意味は次のとおりです。
O - プロセッサ上で実行中
S - スリープ状態。プロセスはイベントが終了するのを待っている。
R - 実行可能状態。プロセスが実行待ち行列内にある。
I - アイドル状態。プロセスは現在作成中。
Z - ゾンビ状態。プロセスはすでに終了し、親プロセスは待機していない。
T - トレース中。親プロセスがそのプロセスをトレース中のため、プロセスはシグナルによって停止されている。
X - SXBRK 状態。プロセスは主記憶が空くのを待っている。
ps コマンドの実行中でもプロセスの状態は変化します。ps で取得できる情報は特定時点の実行状態のスナップショットのため、その出力結果は、ps を入力した直後のほんの僅かの時間にしか適用できません。したがって、状態情報が表示された時点で、すでに変わっている可能性もあります。
ps コマンドにはこの節で説明している以外に多数のオプションがあります。詳細については、『SunOS リファレンスマニュアル (1): ユーザーコマンド』を参照してください。
kill コマンドを使うと、不要になったコマンドプロセスを直接終了できます。このコマンドは、実行に長時間かかるコマンドを誤って入力した場合に特に便利です。
プロセスを終了するには、次の手順を実行します。
$ ps PID TTY TIME COMMAND 1291 co 0:12 -bin/csh (csh) 3250 p0 0:00 ps 1286 p1 0:05 -bin/csh (csh) 3248 p1 0:05 vi commands $ kill 1291 [1} Terminated -bin/csh/ (csh) $ |
ps の出力結果を grep コマンドを通じてパイプすると、適切な PID を簡単に見つけることができます。
$ ps | grep commandname |
commandname は、終了させたいコマンドプロセス名です。
プロセスを強制終了する場合は、次に示すように ps コマンドの -9 オプションを使えます。
$ kill -9 PID# |