sigtermとは?初心者にも分かる基本と使い方ガイド共起語・同意語・対義語も併せて解説!

  • このエントリーをはてなブックマークに追加
sigtermとは?初心者にも分かる基本と使い方ガイド共起語・同意語・対義語も併せて解説!
この記事を書いた人

高岡智則

年齢: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の基本

シグナル名備考
SIGTERM15通常の終了要求。処理の整理と資源解放の機会を与える
SIGKILL9強制終了。後処理は不可。最後の手段として使用

この表を覚えておくと現場での判断が早くなります。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 などの信号と関係することがある。

sigtermのおすすめ参考サイト


インターネット・コンピュータの人気記事

awstatsとは?初心者でもわかる使い方と基本解説共起語・同意語・対義語も併せて解説!
14212viws
bing・とは?初心者のための基本ガイド:検索エンジンの仕組みと使い方共起語・同意語・対義語も併せて解説!
2162viws
着信転送とは?初心者向けガイドで分かる使い方と設定のコツ共起語・同意語・対義語も併せて解説!
1037viws
リマインドメールとは?初心者にもわかる基本ガイドと使い方のコツ共起語・同意語・対義語も併せて解説!
745viws
充電アダプターとは何かを徹底解説|初心者でも分かる基本と選び方のコツ共起語・同意語・対義語も併せて解説!
716viws
com端子・とは?初心者にも分かる基礎ガイド|シリアルポートの使い方と歴史を解説共起語・同意語・対義語も併せて解説!
662viws
pinロックとは?初心者が知っておくべき基本と使い方ガイド共起語・同意語・対義語も併せて解説!
577viws
16進数カラーコード・とは?初心者でもつまずかない基礎と使い方ガイド共起語・同意語・対義語も併せて解説!
534viws
7zファイル・とは?初心者でもわかる使い方と特徴を解説共起語・同意語・対義語も併せて解説!
509viws
asp・とは?初心者向けに徹底解説する基本と使い方ガイド共起語・同意語・対義語も併せて解説!
499viws
ローカルポート・とは?初心者にも分かる基本と使い方ガイド共起語・同意語・対義語も併せて解説!
467viws
差し込み印刷・とは?初心者でもすぐわかる使い方と仕組みガイド共起語・同意語・対義語も併せて解説!
456viws
全角文字とは?初心者向け解説|全角と半角の違いをやさしく学ぶ共起語・同意語・対義語も併せて解説!
432viws
ワンタイムコード・とは?初心者でも分かる基本と使い方ガイド共起語・同意語・対義語も併せて解説!
393viws
none とは?初心者にもやさしく解説する意味と使い方ガイド共起語・同意語・対義語も併せて解説!
388viws
select句・とは?初心者でも分かるSQLの基本と使い方共起語・同意語・対義語も併せて解説!
370viws
csvダウンロードとは?初心者が今すぐ使える基本ガイド共起語・同意語・対義語も併せて解説!
353viws
ダイレクトチャットとは?初心者向けガイドで使い方と注意点を徹底解説共起語・同意語・対義語も併せて解説!
336viws
sha256とは?初心者が知るべき暗号ハッシュの基礎と使い道共起語・同意語・対義語も併せて解説!
286viws
解像度スケールとは?初心者でも分かる解像度スケールの基礎と使い方共起語・同意語・対義語も併せて解説!
280viws

新着記事

インターネット・コンピュータの関連記事