回答:
kill
指定されたプロセスにシグナルを送信するだけです。-9
送信する信号を伝えます。
異なる番号は、異なる共通信号に対応しています。SIGINT
、たとえば、2ですので、プロセスにSIGINT
信号を送信するには、コマンドを発行します
$ kill -2 <pid>
killのデフォルトのシグナルはTERMです。
マンページには、送信できるシグナルの表もあります。この表によると、TERM
です15
ので、これらはすべて同等です。
kill <pid>
kill -15 <pid>
kill -TERM <pid>
通知9はKILL
信号です。
Name Number Action
-----------------------
ALRM 14 exit
HUP 1 exit
INT 2 exit
KILL 9 exit this signal may not be blocked
PIPE 13 exit
POLL exit
PROF exit
TERM 15 exit [Default]
USR1 exit
USR2 exit
VTALRM exit
STKFLT exit may not be implemented
PWR ignore may exit on some systems
WINCH ignore
CHLD ignore
URG ignore
TSTP stop may interact with the shell
TTIN stop may interact with the shell
TTOU stop may interact with the shell
STOP stop this signal may not be blocked
CONT restart continue if stopped, otherwise ignore
ABRT 6 core
FPE 8 core
ILL 4 core
QUIT 3 core
SEGV 11 core
TRAP 5 core
SYS core may not be implemented
EMT core may not be implemented
BUS core core dump may fail
XCPU core core dump may fail
XFSZ core core dump may fail
KILL
とSTOP
信号はいわゆるキャッチ不能信号であると付け加えます。つまり、TERM
シグナルがプロセスに送信されると、シグナルをキャッチして、必要なさまざまな「シャットダウン」操作を実行できます。KILL
信号は、直ちにプロセスを停止します。
man 7 signal
デフォルトのシグナルはTERMで、強制終了されたプログラムがそれをキャッチし、終了する前に何らかのクリーンアップを実行できるようにします。プログラムは、そのように書かれていれば、無視することもできます。
-9またはKILLをシグナルとして指定すると、プログラムはそれをキャッチしたり、クリーンアップしたり、無視したりできません。最後の手段としてのみ使用してください。
Bashの番号と信号名のリストを表示するには、kill -l
(レターエル)を使用します。
Ubuntu Linuxを使用しています。
Killコマンドは、基本的にプロセスにシグナルを送信して終了します。日常のコンピューティングの複雑な動作の期待を簡素化するために、killコマンドにはさまざまなオプションがあります。
上記で説明したように、その定義に対応するすべてのキル番号オプションがあります。
いくつかの行を追加したいと思います。
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
上記のように、これらはすべてUbuntu Linuxを実行した場合に取得できるすべての強制終了オプションです。
ただし、特定のキル信号はすべての* NIXフレーバーで共通です。
kill -9はSIGKILLオプションであり、カーネルはこのシグナルを無視できません。つまり、この-9またはSIGKILLオプションを尊重し、すぐにプロセスを終了します。このプロセスは、アプリケーションプログラムでは処理できないことに注意してください。
一方、kill -15はSIGTERMシグナルを送信します。つまり、終了する前にプロセスが完全にシャットダウンするまで待機します。これはデフォルトのシグナルです。
kill <pid>
)はTERMです。