Linux では、シグナルをプロセスに送信することでプロセスを管理できます。そのための主要なコマンドはkillですが、その名前にもかかわらず、プロセスを終了させるシグナルだけでなく、さまざまなシグナルを送信できます。
kill sigterm によるデフォルトの終了
プロセス ID(PID)のみを指定してkillコマンドを使用すると、デフォルトでTERMシグナルが送信されます。これは、プログラムに正常に終了するように要求する標準的で穏当な方法です。
kill 12445
kill sigtermシグナル(SIGTERMまたはシグナル 15 としても知られる)は、プロセスにクリーンアップしてシャットダウンするように要求します。これにより、プロセスは進捗を保存し、リソースを適切に解放する機会を得ます。シグナル番号を明示的に使用することもでき、kill -15 12445は上記のコマンドと同等になります。これは一般的なkill -15 linuxの問い合わせに対応します。
SIGKILL による強制終了
プロセスが応答しなくなり、SIGTERMシグナルに反応しない場合があります。このような場合は、KILLシグナルを使用して強制的に停止させることができます。
kill -9 12445
SIGKILLシグナル(シグナル 9)は、プロセスにクリーンアップの機会を与えることなく、即座にプロセスを終了させます。これはkill vs terminateの議論における重要な違いです。SIGKILLは無条件の終了であり、SIGTERMは丁寧な要求です。
その他の一般的なシグナルの理解
SIGTERMとSIGKILLが最も一般的ですが、他のシグナルもプロセス管理に役立ちます。
- SIGHUP:
kill sighupシグナル(ハングアップ、シグナル 1)は、制御端末が閉じられたときに伝統的にプロセスに送信されます。デーモンプロセスに設定ファイルを再読み込みするように指示するために使用できます。 - SIGINT: 割り込みシグナル(シグナル 2)は、
Ctrl-Cを押したときに送信されます。プロセスに現在の操作を中断するように要求します。 - SIGSTOP: このシグナル(シグナル 19)は、プロセスを終了させずに一時停止します。プロセスは後で
SIGCONTシグナルで再開できます。
kill -0 によるプロセスの存在確認
特殊な使用例としてlinux kill -0があります。このコマンドは実際にはシグナルを送信せず、指定された PID を持つプロセスが存在するか、およびそれをシグナル送信する権限があるかを確認します。
kill -0 12445
コマンドが正常に実行された場合(終了コード 0)、プロセスは存在します。失敗した場合は、プロセスが存在しないか、権限がありません。