7. kill(終了)

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は丁寧な要求です。

その他の一般的なシグナルの理解

SIGTERMSIGKILLが最も一般的ですが、他のシグナルもプロセス管理に役立ちます。

  • SIGHUP: kill sighupシグナル(ハングアップ、シグナル 1)は、制御端末が閉じられたときに伝統的にプロセスに送信されます。デーモンプロセスに設定ファイルを再読み込みするように指示するために使用できます。
  • SIGINT: 割り込みシグナル(シグナル 2)は、Ctrl-Cを押したときに送信されます。プロセスに現在の操作を中断するように要求します。
  • SIGSTOP: このシグナル(シグナル 19)は、プロセスを終了させずに一時停止します。プロセスは後でSIGCONTシグナルで再開できます。

kill -0 によるプロセスの存在確認

特殊な使用例としてlinux kill -0があります。このコマンドは実際にはシグナルを送信せず、指定された PID を持つプロセスが存在するか、およびそれをシグナル送信する権限があるかを確認します。

kill -0 12445

コマンドが正常に実行された場合(終了コード 0)、プロセスは存在します。失敗した場合は、プロセスが存在しないか、権限がありません。

ログインして学習進捗を保存

サインイン

演習

学んだことを適用するために、プロセス管理と終了に関する理解を深めるための実践的なラボを試してください。

  1. Linux プロセスの管理と監視 - このラボでは、Linux システム上のプロセスの管理と監視に不可欠なスキルを学びます。フォアグラウンドプロセスとバックグラウンドプロセスの操作、psを使用した検査、topを使用したリソースの監視、reniceを使用した優先度の調整、killを使用した終了方法を探ります。

このラボは、プロセス制御と終了の概念を実際のシナリオに適用し、Linux プロセスの管理に対する自信を築くのに役立ちます。

クイズ

デフォルトの`kill`コマンドのシグナル名はなんですか?英語で回答してください。回答は大文字と小文字が区別されます。