

高岡智則
年齢:33歳 性別:男性 職業:Webディレクター(兼ライティング・SNS運用担当) 居住地:東京都杉並区・永福町の1LDKマンション 出身地:神奈川県川崎市 身長:176cm 体系:細身〜普通(最近ちょっとお腹が気になる) 血液型:A型 誕生日:1992年11月20日 最終学歴:明治大学・情報コミュニケーション学部卒 通勤:京王井の頭線で渋谷まで(通勤20分) 家族構成:一人暮らし、実家には両親と2歳下の妹 恋愛事情:独身。彼女は2年いない(本人は「忙しいだけ」と言い張る)
sigtermとは何か
sigtermとは Unix 系のオペレーティングシステムで使われる「シグナル」の一つであり、プロセスに終了のリクエストを送る目的で使われます。シグナルは通常、バックグラウンドで動くプログラムやサービスに対して外部から指示を送る手段です。sigterm は「優雅に終了してください」という意味合いが強く、実行中の処理を突然止めずに終わらせる機会を与えることを意図しています。
SIGTERMの基本
シグナルには名前と番号があり、SIGTERMは多くのOSで番号15です。デフォルトの動作は終了です。SIGTERMを受け取ったプロセスは通常、資源を解放して正常に終了する機会を作ります。ここで覚えておきたいのはSIGTERMは graceful terminationの機会を与えるという点です。
実際の使い方
SIGTERMを送るにはコマンドラインのkillを使います。例: kill -TERM 1234 または kill 1234 のようにします。1234は対象のプロセスIDです。もし特定の名前のプロセスに送りたい場合はpkillやkillallという別の方法もあります。
実際に送った後の挙動は対象プログラム次第です。受け取った側がすぐに終了するとは限らず、適切なタイミングで処理を終える設計が必要なことがあります。例えばデータの保存やファイルのクローズ処理を完了させる時間が必要な場合があります。
SIGTERMとSIGKILLの違い
SIGKILLは名前の通り強制的に終了させるシグナルで、受け取ったプロセスは一切の後処理を行えません。一方SIGTERMは通常の終了手順を踏む機会を与えます。安全なシステム運用の面からも、まず_SIGTERMを送るのが基本的な流れです。
システム管理者は長時間動作するサービスに対して停止と再起動を行う際にSIGTERMを使って graceful terminationを実現します。
ハンドリングと実装のヒント
多くのプログラミング言語ではSIGTERMを受け取った時の挙動を自分で定義できます。代表的な考え方をいくつか紹介します。
まずはSIGTERMを受け取ったときに実行したいクリーンアップ処理を用意します。次にその処理を適切なタイミングで呼び出すようにします。最後に終了までの待機時間を設定し、外部からの制御に対応できるようにします。
実務でのポイントと注意
デーモンやサービスを再起動する際にはSIGTERMを使って穏やかに止めるのが基本です。スクリプトやプログラムが閉じる準備を整える間、他の処理に影響を与えないようにすることが重要です。もしSIGTERMを受け取っても終了しないプログラムがある場合は、別の手段としてSIGKILLを検討しますが、可能な限り graceful terminationを優先します。
表で見るSIGTERMの基本
| シグナル名 | 値 | 備考 |
|---|---|---|
| SIGTERM | 15 | 通常の終了要求。処理の整理と資源解放の機会を与える |
| SIGKILL | 9 | 強制終了。後処理は不可。最後の手段として使用 |
この表を覚えておくと現場での判断が早くなります。SIGTERMを送ることで多くのプログラムは最後の機会を得て安全に終了します。もし終了処理が正しく動作していない場合は、原因をログで確認したうえで適切な修正を行いましょう。
まとめとして SIGTERMはプロセスに対して「優雅に終了してほしい」という依頼を送る手段です。外部からの終了要求に対して、プログラムが資源を解放しつつ安全に終わるよう設計することが大切です。対照的な SIGKILL は強制終了であり、これを使う場面は限られます。日常のシステム運用ではまずSIGTERMを試し、可能な限り graceful terminationを実現しましょう。
sigtermの同意語
- SIGTERM
- Unix系OSで使われる終了信号の正式名称。プロセスに優雅な終了を依頼する標準的な信号で、終了処理をきちんと行う機会を与えます。
- TERM信号
- SIGTERMの別名。killコマンドなどでTERMを指定して送ることができ、同じ意味を持つ信号です。
- 終了信号
- プロセスの終了を促す信号の総称。特にSIGTERMを指す文脈で使われます。
- 終了シグナル
- 終了を指示する信号の総称。SIGTERMと同義として用いられることがあります。
- 終了要求信号
- プロセスへ“終了してほしい”という要請を伝える信号。優雅な終了を促す目的で使われます。
- グレースフル終了信号
- Graceful terminationを意味する表現。適切なリソース解放など、丁寧な終了を指示します。
- 優雅な終了信号
- グレースフル終了の別表現。プロセスが安全に終了できるよう働きかける信号の意味を持ちます。
- termination signal
- 英語表現。SIGTERMと同義として用いられることがありますが、文脈により“終了信号”全般を指す場合も。
- プロセス終了信号
- 特定のプロセスを終了させる目的の信号。SIGTERMが代表的な例です。
- 信号15
- SIGTERMの数値表現。シグナル番号として送信する際に使われます。
- 数値15
- SIGTERMの数値表現を指す表現。信号番号15で送られる終了信号の意味を持ちます。
sigtermの対義語・反対語
- SIGKILL
- 強制終了を実行するシグナル。プロセスを即座に終了させ、通常の終了処理(SIGTERMのような穏やかな終了)を経ない点が対義的。
- SIGSTOP
- 実行を一時停止するシグナル。終了させずに停止させるため、SIGTERMの終結とは性質が異なる対比となる。
- SIGCONT
- 停止しているプロセスを再開させるシグナル。停止(SIGSTOP)の反対で、実行の継続を促す意味を持つ。
- SIGINT
- 割り込みを発生させるシグナル。通常は途中での中断を意図しており、SIGTERMの穏やかな終了とは異なる意図を示す対比。
- SIGHUP
- セッションの切断や設定の再読込を促す信号。終了よりも再接続・再設定の側面が強く、SIGTERMの終了とは別の意味を持つ対照。
- SIGABRT
- 異常終了を引き起こす信号。プログラムを即座に終わらせる性質があり、SIGTERMの穏やかな終了とは対極的。
- SIGQUIT
- 端末からの退出を通知する信号。コアダンプを伴うこともあり、SIGTERMとは異なる終了の仕方を示す。
- SIGUSR1
- ユーザー定義の任意の処理を通知する信号。終了とは直接関係せず、任意の挙動を呼び出す点で対比的。
- SIGUSR2
- もう一つのユーザー定義信号。特定の処理を呼び出す通知として使われ、SIGTERMの終了動作とは別の挙動を示す。
sigtermの共起語
- SIGTERM
- 終了信号。プロセスに対して終了してよいと穏やかな停止を促す標準的な信号。捕捉して後始末を行うことができる。
- SIGKILL
- 強制終了信号。捕捉・処理を一切行えず、即座にプロセスを終了させる。
- SIGINT
- 中断信号。通常はCtrl+Cで送られ、現在の作業を中断するために使われる。
- SIGQUIT
- 終了要求と同時にコアダンプを作成する信号。デバッグ時に役立つことがある。
- SIGCHLD
- 子プロセスの終了や停止を通知する信号。親プロセスが子の状態を知るために使う。
- signal
- システムがプロセスへ送る通知自体のこと。信号と呼ばれる概念。
- signal handler
- 信号を受け取ったときに実行される関数・処理。
- sigaction
- C言語で信号処理を登録・管理するための関数。より柔軟な制御を提供する。
- trap
- シェルで特定の信号を受け取ったときの動作を定義するコマンド。
- kill -TERM
- 具体的にSIGTERMを送るコマンドの書き方。PIDを指定して終了を促す。
- systemd
- Linuxのサービスマネージャ。停止時にSIGTERMを送って優雅に終了させる。
- graceful shutdown
- リソースを適切に解放し、データの整合性を保ちながら終了する方法のこと。
- PID
- プロセスID。特定のプロセスを識別する番号。
- Unix/Linux/macOS
- SIGTERMはUnix系・Linux・macOSなどのOSで共通して使われる信号。
- POSIX
- 信号の標準仕様を定めるPOSIX規格に含まれる信号群の考え方。
- Pythonのsignal.SIGTERM
- Pythonのsignalモジュールで定義されたSIGTERM。Pythonから信号を扱う際に参照する。
- Goのos.Signal/SIGTERM
- Go言語でSIGTERMを扱うときの表現。os.Signalとsyscall.SIGTERMを使う。
sigtermの関連用語
- SIGTERM
- プロセスを優雅に終了させるための信号。デフォルトの動作は終了だが、捕捉・無視・ブロックが設定可能な場合があり、終了処理でリソース解放やクリーンアップの機会を与える。システム管理ツールはまずこの信号を送って停止を促すことが多い。
- SIGKILL
- 強制終了。不問・捕捉不可。プロセスに処理をさせず即座に終了させる最終手段。
- SIGINT
- 割り込み信号。通常は Ctrl+C で送られ、現在の処理を中断させる用途に使われる。
- SIGSTOP
- 停止信号。プロセスを一時的に停止させる。捕捉不可で後で再開できる。
- SIGCONT
- 停止中のプロセスを再開させる信号。
- SIGHUP
- ハングアップ(端末切断など)を通知する信号。設定の再読み込みなど再初期化に用いられることもある。
- SIGUSR1
- ユーザー定義信号1。アプリ側が任意の用途で利用できる信号。
- SIGUSR2
- ユーザー定義信号2。アプリ側が任意の用途で利用できる信号。
- SIGPIPE
- パイプに相手がいなくなったときに送られる信号。書き込みエラーの通知として使われることが多い。
- SIGALRM
- アラーム信号。alarm() や timer による経過通知を受け取る際に使われる。
- SIGCHLD
- 子プロセスの終了・停止を親に通知する信号。wait() などで子の状態を待つ際に重要。
- シグナル
- プロセス間でイベントを通知する仕組み。特定の番号が割り当てられ、受け取ったときに決められた動作を行う。
- POSIX信号
- UNIX系の標準的な信号機構。カーネルがプロセスに信号を送る共通仕様で、多くのOSで使われる。
- signal関数 / sigaction
- プログラム内で信号を受け取ったときの処理を設定する API。signal は古く、sigaction の方が安全で推奨される。
- シグナルハンドラ
- 信号を受け取った際に実行される関数。適切な後処理や状態保持を行うために定義する。
- シグナルマスク
- 現在処理中に受け付ける信号を制限する機能。特定の処理中に信号をブロックするのに使われる。
- trap(bash)
- シェルで特定の信号を捕捉して、指定したコマンドを実行する仕組み。スクリプトでの安全な終了処理などに活用。
- killコマンド
- プロセスに対して信号を送るためのコマンド。-TERM や -KILL などの指定で信号を選べる。
- systemd の停止処理と SIGTERM
- Linux のサービスマネージャsystemdは停止時にまず SIGTERM を送信し、応答がない場合は SIGKILL で強制終了するなどの手順を取ることが多い。
- graceful shutdown(優雅な終了)
- リソースを正しく解放しつつ、サービスを停止する考え方。主に SIGTERM の利用で実現することが多い。
- コアダンプ
- 致命的なエラーでプロセスが停止した際に、メモリ内容をファイルとして保存する現象。通常は SIGABRT や SIGSEGV などの信号と関係することがある。



















