web-dev-qa-db-ja.com

UNIXのkill -9コマンドの9番

私はそれがトピックから外れていることを理解しています、オンラインでどこにも見つけることができず、コミュニティのプログラミングの達人がこれを知っているかもしれないと思っていました。
私は通常使用します

kill -9 pid

仕事を殺すために。私はいつも9の起源を疑問に思っていました。オンラインで調べたところ、

「9はキャッチまたは無視できないKILLシグナルを意味します。つまり、プロセス(実行中のアプリケーション)にすぐに終了するようにシグナルを送信します」(ソース: http://wiki.answers.com/Q/What_does_kill_-9_do_in_unix_in_its_entirety

しかし、なぜ9ですか?他の数字はどうですか?歴史的な意味はあるのですか、それともUnixのアーキテクチャのためですか?

92
Alby

他のシグナルのリストについては、 nixシグナルに関するウィキペディアの記事 を参照してください。 SIGKILLはたまたま9番になりました。

ニーモニックも数字として使用できます。

kill -SIGKILL pid
83
Rafał Rawicki

彼らが最初に思いついた他の8つの信号がありました。

71

ここでのより良い答えは単にこれだと思います:

mike@sleepycat:~☺  kill -l
 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    

9の「重要性」については...おそらくないでしょう。 The Linux Programming Interface(p 388) によると:

各信号は、1から順番に始まる一意の(小さな)整数として定義されます。これらの整数は、SIGxxxxという形式のシンボル名で定義されます。 各信号に使用される実際の数は実装によって異なるため、プログラムで常に使用されるのはこれらの記号名です。

46
mikewilliamson

最初に、UnixライクなシステムでのSignalsを知る必要があります(数分かかります)。

Signalsは、重要なイベントが発生したことを示すために(実行中の)プログラムに送信されるソフトウェア割り込みです。

イベントは、ユーザーの要求から不正なメモリアクセスエラーまでさまざまです。割り込み信号などの一部の信号は、ユーザーがプログラムに通常の制御フローにない何かを行うように要求したことを示します。

使用できるシグナルにはいくつかの種類があります-利用可能な/可能なすべてのシグナルの完全なリストを取得するには、「$ kill -l」コマンドを使用します。 enter image description here

上記の出力では、各信号に「信号番号」(たとえば、1、2、3)と「それに関連付けられたシグナル名 '(SIGUP、SIGINT、SIGQUITなど)。それぞれのシグナルが何をするかを詳しく調べるには、この link にアクセスしてください。

最後に、「kill -9コマンドの9番の理由」という質問に答えます。

信号をプログラムまたはスクリプトに配信する方法はいくつかあります。信号を送信するためによく使用される方法の1つは、killコマンドを使用することです-基本的な構文は次のとおりです。

$ kill -signal pid

Signalは、numberまたはnameのいずれかで、その後にシグナルの送信先のプロセスID(pid)。

たとえば--SIGKILL(または-9)、シグナルはすぐに処理します。

$ kill -SIGKILL 1001

そして

$ kill -9 1001

両方のコマンドは同じものです。つまり、上記では「シグナル名」を使用し、後で「シグナル番号」を使用しました。

Verdictkillで 'signal name'または 'signal number'を使用するかどうかを選択できますコマンド。

29
Nabeel Ahmed

これは、ビートルズによる「Revoulution 9」への言及です。サウンドクリップをつなぎ合わせ、ノイズを見つけたコレクション。この録音は、ジョンレノンが「ナンバー9、ナンバー9 ...」を何度も繰り返すことを特徴としています。さらに、この曲は、 「電源を入れてください、死んだ男...」

したがって、9番目のシグナルは、キルシグナルの中で最も致命的であることになっています。

18
Stairbob

Unixシグナルの非常に長いリストがあり、それを表示できます Wikipediaで 。やや紛らわしいことに、実際にkillを使用してプロセスにシグナルを送信できます。たとえば、kill -SIGSTOP 12345はプロセス12345の実行を一時停止させ、kill -SIGCONT 12345はプロセスの再開を指示します。 kill -9のやや難解なバージョンはkill -SIGKILLです。

7

9番には意味がないと思います。さらに、killはプロセスを強制終了するだけでなく、プロセスにシグナルを送信するためにも使用されます。本当に興味があるなら、 herehere を読むことができます。

4
Ilia Frenkel

SIGKILLプロセスを強制終了するために使用します。 SIGKILLは無視または処理できません。 Linuxでは、SIGKILLを指定する方法。

kill -9 <process_pid> 
kill -SIGKILL <process_pid> 
killall -SIGKILL <process_name>
killall -9 <process_name>
1
user9594626

なぜ-9を殺す:シグナルのリストの9番は、「猫の9つの命を殺す」という意味でSIGKILLになるように選択されました。

1
LaFleche78

この "kill%1"のように、killできないプロセスがいくつかあります。そのプロセスを終了する必要がある場合、kill -9であるプロセスを強制終了するために特別なコマンドが使用されます。たとえば、vimを開き、ctrl + zを使用してジョブを表示し、killプロセスを適用した後、このプロセスが終了しない場合は停止するため、ここでは終了にkill -9コマンドを使用します。

0
Usman

-9はsignal_numberであり、送信されるキルメッセージはKILL(キャッチ不能、無視不能)タイプであることを指定します。

kill -9 pid

以下と同じです。

kill -SIGKILL pid

Signal_numberを指定しない場合、デフォルトは-15(TERM(ソフトウェア終了シグナル))です。 kill <pid>と入力することは、kill -15 <pid>と同じです。

0
Harini

どちらもkill -sigkill processID、kill -9 processIDと同じです。基本的にプロセスの強制終了用です。

0
Abhilash TC

シェルでkill -lコマンドを入力します

9番目の番号[9)SIGKILL]で、kill -9またはkill -SIGKILLを使用できることがわかります。

SIGKILLは確実にkillシグナルであり、破棄、無視、または処理できません。プロセスを強制終了するというデフォルトの動作で常に動作します。

0
Sandeep_black