私はそれがトピックから外れていることを理解しています、オンラインでどこにも見つけることができず、コミュニティのプログラミングの達人がこれを知っているかもしれないと思っていました。
私は通常使用します
kill -9 pid
仕事を殺すために。私はいつも9の起源を疑問に思っていました。オンラインで調べたところ、
「9はキャッチまたは無視できないKILLシグナルを意味します。つまり、プロセス(実行中のアプリケーション)にすぐに終了するようにシグナルを送信します」(ソース: http://wiki.answers.com/Q/What_does_kill_-9_do_in_unix_in_its_entirety )
しかし、なぜ9ですか?他の数字はどうですか?歴史的な意味はあるのですか、それともUnixのアーキテクチャのためですか?
他のシグナルのリストについては、 nixシグナルに関するウィキペディアの記事 を参照してください。 SIGKILLはたまたま9番になりました。
ニーモニックも数字として使用できます。
kill -SIGKILL pid
彼らが最初に思いついた他の8つの信号がありました。
ここでのより良い答えは単にこれだと思います:
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という形式のシンボル名で定義されます。 各信号に使用される実際の数は実装によって異なるため、プログラムで常に使用されるのはこれらの記号名です。
最初に、UnixライクなシステムでのSignalsを知る必要があります(数分かかります)。
Signalsは、重要なイベントが発生したことを示すために(実行中の)プログラムに送信されるソフトウェア割り込みです。
イベントは、ユーザーの要求から不正なメモリアクセスエラーまでさまざまです。割り込み信号などの一部の信号は、ユーザーがプログラムに通常の制御フローにない何かを行うように要求したことを示します。
使用できるシグナルにはいくつかの種類があります-利用可能な/可能なすべてのシグナルの完全なリストを取得するには、「$ kill -l」コマンドを使用します。
上記の出力では、各信号に「信号番号」(たとえば、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
両方のコマンドは同じものです。つまり、上記では「シグナル名」を使用し、後で「シグナル番号」を使用しました。
Verdict:killで 'signal name'または 'signal number'を使用するかどうかを選択できますコマンド。
これは、ビートルズによる「Revoulution 9」への言及です。サウンドクリップをつなぎ合わせ、ノイズを見つけたコレクション。この録音は、ジョンレノンが「ナンバー9、ナンバー9 ...」を何度も繰り返すことを特徴としています。さらに、この曲は、 「電源を入れてください、死んだ男...」
したがって、9番目のシグナルは、キルシグナルの中で最も致命的であることになっています。
Unixシグナルの非常に長いリストがあり、それを表示できます Wikipediaで 。やや紛らわしいことに、実際にkill
を使用してプロセスにシグナルを送信できます。たとえば、kill -SIGSTOP 12345
はプロセス12345の実行を一時停止させ、kill -SIGCONT 12345
はプロセスの再開を指示します。 kill -9
のやや難解なバージョンはkill -SIGKILL
です。
SIGKILL
プロセスを強制終了するために使用します。 SIGKILL
は無視または処理できません。 Linuxでは、SIGKILL
を指定する方法。
kill -9 <process_pid>
kill -SIGKILL <process_pid>
killall -SIGKILL <process_name>
killall -9 <process_name>
なぜ-9を殺す:シグナルのリストの9番は、「猫の9つの命を殺す」という意味でSIGKILLになるように選択されました。
この "kill%1"のように、killできないプロセスがいくつかあります。そのプロセスを終了する必要がある場合、kill -9であるプロセスを強制終了するために特別なコマンドが使用されます。たとえば、vimを開き、ctrl + zを使用してジョブを表示し、killプロセスを適用した後、このプロセスが終了しない場合は停止するため、ここでは終了にkill -9コマンドを使用します。
-9
はsignal_numberであり、送信されるキルメッセージはKILL(キャッチ不能、無視不能)タイプであることを指定します。
kill -9 pid
以下と同じです。
kill -SIGKILL pid
Signal_numberを指定しない場合、デフォルトは-15(TERM(ソフトウェア終了シグナル))です。 kill <pid>
と入力することは、kill -15 <pid>
と同じです。
どちらもkill -sigkill processID、kill -9 processIDと同じです。基本的にプロセスの強制終了用です。
シェルでkill -lコマンドを入力します
9番目の番号[9)SIGKILL]で、kill -9またはkill -SIGKILLを使用できることがわかります。
SIGKILLは確実にkillシグナルであり、破棄、無視、または処理できません。プロセスを強制終了するというデフォルトの動作で常に動作します。