next up previous contents
Next: 2.4 ランレベル(run level) Up: 2.3 Solarisのプロセス Previous: 2.3 Solarisのプロセス

2.3.1 killコマンド

さて、あるプロセスの挙動が異常になった場合、また設定を変更したためプロ セスを再起動しなければならない場合など、現在動いているプロセスを終了さ せる必要がある場合、どうすればよいでしょう。端末から起動したプロセスで あればその端末からCntrl-Cなどを入力して割り込みをかけることができます が、端末と関係なく起動されたプロセスの場合そうもいきません。

このような場合、killコマンドを用いることになります。自分の所有す るプロセスであれば、またはスーパーユーザであればkillコマンドでプロセス を終了させることが可能です。

killコマンドの使い方は次の通りです。

kill [-シグナル] プロセス番号 [プロセス番号, ...]
シグナルには以下のものが指定できます。(この一覧を表示させるには、kill -lを実行します。)

HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM
TERM USR1 USR2 CLD LOST WINCH URG IO STOP TSTP CONT TTIN TTOU
VTALRM PROF XCPU XFSZ WAITING LWP

これらのシンボリック名の代わりに、/usr/include/sys/signal.h 中で定義さ れた対応する整数値でシグナルを指定することもできます。 デフォルトでは15(SIGTERM)が送られます。これにより、(そのプロセスがこ のシグナルを無視するようにプログラムされていなければ)プロセスを終了さ せることができます。TERMシグナルで終了しない場合、

kill -9 プロセス番号
で、SIGKILLを送ってみます。2.5

場合によっては、SIGKILLでもプロセスを殺せないことがあります。よくあるのは 次のような場合です。

1.
プロセスが、テープのようなデバイスを待っている場合。
==> デバイスの処理を終了させてから、殺す。
2.
プロセスが、使えないリソースを待っている場合(NFSなど)
==> kill -QUIT PID で殺せる。
3.
プロセスがゾンビになっている。
==> boot しか方法はないが、害は無い。



Noriyo Kanayama