web-dev-qa-db-ja.com

`kill -9 <pid>`と `kill -INT <pid>`の違いは?

違いがわからない

kill -9 <pid>

そして

kill -INT <pid>

私が3歳のように誰かに説明してもらえますか?

5
Alexander Mills

kill -INT $pidは、プロセスID pidのプロセスに「割り込み」信号を送信します。ただし、プロセスはシグナルを無視するか、シグナルをキャッチして終了する前に何かを行うか、シグナルを無視するかを決定します。

kill -9 $pidは、キャッチまたは無視できない「kill」信号を送信します。プロセスは通知されずに強制的にシャットダウンされ、クリーンアップを実行する機会もありません。 kill -9 $pidは、推奨されることも使用されることもほとんどありませんが、必要な場合もあります。

高度な概念

kill -INT $pidkill -2 $pidと同じです。
kill -9 $pidkill -KILL $pidと同じです

killコマンドには多くのバージョンがあります。ほとんどのシェル(ksh、bash、dashなど)にはkillコマンドが組み込まれており、/bin/killにも1つあります。それらはすべて少し異なりますが、それらのほとんどは上記の例をサポートしています。

ほとんどのkillコマンドには、信号をリストするための-lまたは-Lオプションがあります。

$ /bin/kill -L
 1 HUP      2 INT      3 QUIT     4 ILL      5 TRAP     6 ABRT     7 BUS
 8 FPE      9 KILL    10 USR1    11 SEGV    12 USR2    13 PIPE    14 ALRM
15 TERM    16 STKFLT  17 CHLD    18 CONT    19 STOP    20 TSTP    21 TTIN
22 TTOU    23 URG     24 XCPU    25 XFSZ    26 VTALRM  27 PROF    28 WINCH
29 POLL    30 PWR     31 SYS     
$

シグナルについて読むのに適した場所は、マニュアルのセクション7の "signal"のマニュアルページです:man 7 signal

9
RobertL