読み方 : シグタームシグナル

SIGTERMシグナル

SIGTERMシグナルとは?

LinuxなどのUNIX系OSにおいて、実行中のプロセスに終了を要求する際に送信されるシグナルシグナル番号15番が割り当てられており、killコマンドシグナルを省略した場合に既定で送信される。
SIGTERMシグナルのイメージ画像

SIGTERMを受信したプロセスは、原則として自ら終了処理を実行して停止する。強制終了ではなく「正常終了の要求」として機能するため、プロセスは受信後にファイルへの書き込み完了、リソースの解放、ネットワーク接続の切断といった後始末を行ってから終了できる。このようにプロセスが自発的に身辺整理を済ませてから停止する仕組みは「グレースフルシャットダウン」(graceful shutdown)と呼ばれる。

プロセス側ではSIGTERM受信時の挙動をあらかじめ独自に定義でき、技術的にはシグナルを無視して動作を継続することも可能である。そのため、バグフリーズが原因でシグナルが無視された場合、このシグナルだけではプロセスを停止できない局面が生じる。

SIGTERMとよく対比されるのがSIGKILLシグナルである。SIGKILLオペレーティングシステム(OS)の権限でプロセスを即座に強制終了させるため、プロセス側で終了処理を行う余地がない。この違いから、通常の運用ではまずSIGTERMを送信し、一定時間内に停止しない場合にのみSIGKILL強制終了するという手順が用いられる。OSのシャットダウン時も同様であり、稼働中の全プロセスにSIGTERMを一斉送信した後、一定の待機時間を経てシステム全体の停止処理へ移行する。

コンテナ環境でも同じ考え方が採用されており、DockerKubernetesコンテナを停止する際にはまずSIGTERMをプロセスへ送信する。サーバアプリケーションやデーモンプロセスの開発においては、SIGTERMのハンドラを実装し、処理中のリクエストを完結させてから終了するよう設計することが一般的である。

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