UNIX/Linuxの部屋 コマンド:kill

TOP UNIX/Linuxの部屋 UNIX/Linuxコマンド一覧 用語集 新版 由来/読み方辞書 環境変数マニュアル Cシェル変数 システム設定ファイル システムコール・ライブラリ ネットワークプログラミングの基礎知識 クラウドサービス徹底比較・徹底解説




コマンド kill プロセス・ジョブを終了させる このエントリーをはてなブックマークに追加

UNIX/Linux の kill コマンドは、プロセスやジョブを終了させるコマンドである。プログラムの挙動がおかしくなって入力を受け付けなくなり、C-c でも終了しなくなった場合や、システム全体の負荷が高い状態の場合など、kill でシグナルを送って停止させることができる。



kill コマンドの基本的な使い方
まず下記のように ps コマンドを実行し、終了させたいプロセスのプロセス番号を確認する。
% ps axww | grep hoge (BSD 系の場合)
% ps -ef | grep hoge (SystemV 系の場合)
プロセス番号を確認したら
% kill プロセス番号
を実行する。もういちど ps コマンドで確認して、まだプロセスが生きていたら、
% kill -9 プロセス番号
とすると確実に終了させることができる。

シグナルについて
kill コマンドがプロセスを終了させる方法は、シグナル送信である。デフォルトでは SIGTERM というシグナルが送信される。

-l シグナルの一覧を表示
% kill -l (以下は FreeBSD の場合。シグナルの種類は OS によって結構違う)
HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM
URG STOP TSTP CONT CHLD TTIN TTOU IO XCPU XFSZ VTALRM PROF WINCH
INFO USR1 USR2
主要シグナルの説明
  • INT 中断(インタラプト)。コマンドラインで C-c すると送られるシグナル。
  • TERM プロセスを終了させる。シグナル名を指定しないと TERM が送られる。
  • STOP プロセスを中断させる。CONT で再開できる。C-z のサスペンドと同じ。
  • HUP 回線切断。デーモンプロセス (apache や inetd など)を再起動させる場合によく使われる。
  • CONT STOPで中断したプロセスを再開させる。
  • KILL プロセスを強制終了させる。

シグナルはシグナル名で指定してもよいし、シグナルの番号でもよい。例えば HUP シグナルは 1番 (kill -l で 1番目に表示されるから) なので、
% kill -HUP プロセス番号
% kill -1 プロセス番号
は、どちらも同じである。また、kill -KILL と kill -9 も同じである。なお、シグナル名 (やシグナル番号) を省略したときは SIGTERM シグナルが使われるので、
% kill プロセス番号
% kill -TERM プロセス番号
は、同じ意味である。

プログラムの書き方次第で、プロセスがシグナルを受けても、それを無視させることができる。例えば HUP シグナルをブロックしていれば、C-c で終了しないようにできる。しかしブロックできないシグナルが一つだけある。それは KILL シグナル (-9) で、このシグナルを受けると、あらゆるプロセスは OS によって強制的に終了させられる。
>> Solaris10オンラインマニュアル(man) Solaris10 kill(1)
>> Linuxオンラインマニュアル(man) Linux kill(2)
>> Linuxオンラインマニュアル(man) Linux kill(1)
>> FreeBSDオンラインマニュアル(man) FreeBSD kill(1)

関数 kill このエントリーをはてなブックマークに追加