さまざまなコマンドを使用して、プロセスを終了または「強制終了」するシグナルをプロセスに送信します。これは、プロセスが応答しなくなった (ハングした) 場合、システムが不安定になった場合、または変更しようとしているファイルの制御を放棄できなかった場合に必要です。
pid 番号を使用してプロセスを終了する
プロセス テーブルで kill コマンドを使用すると、プロセスを終了できます。 kill の後に PID を入力すると、特定のプロセスを終了できます。ただし、プロセス テーブルには、自分のものではないプロセスが表示される場合があります。ユーザーは、自分が所有するプロセスでのみ kill コマンドを使用できます。 root として、任意のプロセスを強制終了できます。
キルシグナル
プロセスを強制終了するには多くの方法があり、それぞれがシグナルにマッピングされています。このシグナルは、プロセスを強制終了する方法を決定します。特定の状況では、一部のシグナルが他のシグナルよりも適切です。たとえば、プロセスを正常に終了して、最後のアクティビティをクリーンアップする時間を与えたい場合があります。ただし、一部のプロセスはこのシグナルを無視するか、妥当な時間内に終了できません。そのためには、より積極的なシグナルを発行する必要があるかもしれません.
多くの異なるキルシグナルがあります。各信号には、名前と 1 つ以上の対応する数値があります。いずれかを kill コマンドで使用できます。最も一般的なシグナルのいくつかを以下に説明します:
1. SIGINT (2)
– 端末からプロセスを中断します。
– キャッチまたは無視できます。
– Ctrl+C を押すのと同じ
2. SIGKILL (9)
– プロセスをすぐに強制終了します。
– キャッチまたは無視できません。
– 最後の手段。
3. SIGTERM (15)
– プロセスを終了します。
– キャッチまたは無視できます。
– 端末ではなくプログラムから送信されます。
4. SIGSTOP (17, 19, 23)
– プロセスを一時停止します。
– キャッチまたは無視できません。
– 端末ではなくプログラムから送信されます。
5. SIGSTP (18, 20, 24)
– 端末からのプロセスを一時停止します。
– キャッチまたは無視できます。
– Ctrl+Z を押すのと同じです。
キルシグナルのデモ
以下は、kill シグナルを実装するいくつかの例です。 ID 921 のプロセスを正常に終了するには:
$ kill 15 921
それができない場合は、プロセスをすぐに強制終了します:
$ kill 9 921
または、プロセスを完全に削除するのではなく一時停止するには:
$ kill 17 921
kill コマンドの例
1. シグナルのリストを取得するには:
# kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGEMT 8) SIGFPE 9) SIGKILL 10) SIGBUS 11) SIGSEGV 12) SIGSYS 13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGURG 17) SIGSTOP 18) SIGTSTP 19) SIGCONT 20) SIGCHLD 21) SIGTTIN 22) SIGTTOU 23) SIGIO 24) SIGXCPU 25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGINFO 30) SIGUSR1 31) SIGUSR2
2. 特定のシグナルを送信するには:
# kill -s 9
3. kill のプロセスのリストを指定するには:
# kill 1234 2345 3456
4. デフォルトの SIGTERM (終了) シグナルを使用してプログラムを終了します。
# kill process_id
5. バックグラウンド ジョブを終了します。
# kill %job_id
6. SIGHUP (ハングアップ) シグナルを使用してプログラムを終了します。多くのデーモンは、終了する代わりにリロードします:
# kill -1|HUP process_id
7. SIGINT (割り込み) シグナルを使用してプログラムを終了します。これは通常、ユーザーが「Ctrl + C」を押すことによって開始されます:
# kill -2|INT process_id
8. オペレーティング システムに信号を送り、プログラムを直ちに終了します (信号を取得する機会がありません):
# kill -9|KILL process_id
9. SIGCONT (「続行」) シグナルが受信されるまでプログラムを一時停止するようにオペレーティング システムに通知します。
# kill -17|STOP process_id
10. 指定された GID (グループ ID) を持つすべてのプロセスに `SIGUSR1` シグナルを送信します。
# kill -SIGUSR1 -group_id