デフォルトの処理でプロセスを終了するシグナルが多数あります。最終的な終了シグナルはSIGKILLです。これは処理できず、プロセスが停止する以外に選択肢がないためです。ただし、これを送信すると、プロセスはクリーンアップの機会を失います。したがって、適切な方法では、SIGTERMのようなシグナルを送信する必要があります。このシグナルは、SIGKILLを送信してしばらく経ってもプロセスが終了しない場合にのみ処理できます。
SIGINTとSIGQUITは、任意のプロセス終了の良い候補ではないことに注意してください。これらは端末のキーボードから生成できるため、多くのアプリケーションは特別な目的で使用します。たとえば、pythonインタープリターはSIGINTを使用してKeyboardInterrupt
例外を生成し(対話型のpythonセッションでも単にプロンプトに戻る)、JVMはSIGQUITを使用してスタックトレースをダンプします。SIGINTとSIGQUITは最も標準的なコマンドラインなどのユーティリティのための有効なままですfind
かcat
。
システムのシャットダウン中に、ほとんどのUNIXおよびLinuxシステムはすべてのプロセスにSIGTERMを送信し、5秒待機してからSIGKILLを送信します。これは、任意のプロセスを安全にシャットダウンするための推奨される方法です。
また、SIGKILLでさえ、プロセスが起動するまで、割り込み不能な待機状態にあるプロセスを終了しない場合があることに注意してください。
SIGKILL
。