読み方 : シグタームシグナル
SIGTERMシグナル
SIGTERMシグナルとは?

SIGTERMを受信したプロセスは、原則として自ら終了処理を実行して停止する。強制終了ではなく「正常終了の要求」として機能するため、プロセスは受信後にファイルへの書き込み完了、リソースの解放、ネットワーク接続の切断といった後始末を行ってから終了できる。このようにプロセスが自発的に身辺整理を済ませてから停止する仕組みは「グレースフルシャットダウン」(graceful shutdown)と呼ばれる。
プロセス側ではSIGTERM受信時の挙動をあらかじめ独自に定義でき、技術的にはシグナルを無視して動作を継続することも可能である。そのため、バグやフリーズが原因でシグナルが無視された場合、このシグナルだけではプロセスを停止できない局面が生じる。
SIGTERMとよく対比されるのがSIGKILLシグナルである。SIGKILLはオペレーティングシステム(OS)の権限でプロセスを即座に強制終了させるため、プロセス側で終了処理を行う余地がない。この違いから、通常の運用ではまずSIGTERMを送信し、一定時間内に停止しない場合にのみSIGKILLで強制終了するという手順が用いられる。OSのシャットダウン時も同様であり、稼働中の全プロセスにSIGTERMを一斉送信した後、一定の待機時間を経てシステム全体の停止処理へ移行する。
コンテナ環境でも同じ考え方が採用されており、DockerやKubernetesがコンテナを停止する際にはまずSIGTERMをプロセスへ送信する。サーバアプリケーションやデーモンプロセスの開発においては、SIGTERMのハンドラを実装し、処理中のリクエストを完結させてから終了するよう設計することが一般的である。