読み方 : シグキルシグナル

SIGKILLシグナル

SIGKILLシグナルとは?

LinuxなどのUNIX系OSにおいて、実行中のプロセスを強制終了させるためのシグナルシグナル番号は一般に「9」が割り当てられ、「kill -9 プロセスID」というコマンドで送信できる。通常の終了要求とは異なり、受信したプロセスはその場で即座に終了させられる。
SIGKILLシグナルのイメージ画像

UNIX系OSでは、プロセス間の通知や制御に「シグナル」(signal)という仕組みが使われる。多くのシグナルはプロセス側で捕捉して独自の処理を実装できるが、SIGKILLシグナルは例外である。プロセスはこのシグナルを無視することも、受信をブロックすることも、動作を変更することもできない。カーネルが対象プロセスを直接消去するため、応答不能に陥ったプロセスも確実に終了させられる。

通常、プロセスの終了にはSIGTERMシグナル(15番)が使われる。SIGTERMを受け取ったプロセスは、一時ファイルの削除やネットワーク接続の切断といった後処理を自ら行ってから終了できる。SIGTERMを無視したり、後処理が長引いて終了しないプロセスに対し、最終手段としてSIGKILLシグナルが用いられることが多い。

SIGKILLシグナルではプロセスが後処理を行う機会がまったく与えられないため、ファイルへの書き込みが途中で中断されてデータが破損したり、ロックが解放されないまま残ったりする副作用が生じることがある。また、保存前だったデータは消失する。応答不能なプロセスへの対処では、まずSIGTERMシグナルでの自主的な終了を促し、それでも終了しない場合にSIGKILLシグナルを使うことが多い。

オペレーティングシステム(OS)の内部でもSIGKILLシグナルに近い仕組みが使われる場面がある。Linuxではメモリ不足時に「OOM Killer」と呼ばれる機構が働き、選択されたプロセスを強制終了する。この場合も対象プロセスは終了処理を実行できない。なお、すでに終了済みだが親プロセスに回収されていない「ゾンビプロセス」にはSIGKILLシグナルを送っても効果がなく、カーネルスレッドや割り込み不可能な待機状態にあるプロセスも終了できない場合がある。

この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。