Frage Warum Nummer 9 in kill -9 Befehl in Unix?


Ich verstehe, dass es außerhalb des Themas ist, ich konnte nirgendwo online finden und ich dachte, dass vielleicht programmieren Gurus in der Gemeinschaft das wissen könnten.
Ich benutze normalerweise

kill -9 pid

um den Job zu töten. Ich habe mich immer über die Herkunft von 9 gewundert. Ich habe online nachgeschlagen und es heißt

"9 Bedeutet KILL-Signal, das nicht abfangbar oder ignorierbar ist. Mit anderen Worten, es würde Signalprozess (einige laufende Anwendung) sofort beenden" (Quelle: http://wiki.answers.com/Q/What_does_kill_-9_do_in_unix_in_its_entirety)

Aber warum 9? und was ist mit den anderen Zahlen? Gibt es eine historische Bedeutung oder die Architektur von Unix?


75
2018-03-30 23:24


Ursprung


Antworten:


Sehen der Wikipedia-Artikel über Unix-Signale für die Liste anderer Signale. SIGKILL hat gerade die Nummer 9 bekommen.

Sie können auch die Mnemonics verwenden, wie die Zahlen:

kill -SIGKILL pid

73
2018-03-30 23:27



Es gab 8 andere Signale, die sie zuerst erfanden.


67
2018-03-30 23:26



Ich denke, eine bessere Antwort ist hier einfach:

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    

Bezüglich der "Bedeutung" von 9 ... würde ich sagen, dass es wahrscheinlich keine gibt. Gemäß Die Linux-Programmierschnittstelle (S. 388):

Jedes Signal wird als eindeutige (kleine) ganze Zahl beginnend definiert   sequentiell von 1. Diese ganzen Zahlen sind in mit definiert   symbolische Namen der Form SIGxxxx. Schon seit die tatsächlichen Nummern für   Jedes Signal variiert zwischen ImplementierungenEs sind diese symbolischen Namen   die immer in Programmen verwendet werden.


39
2017-11-13 00:59



Zuerst müssen Sie wissen, was ist Signale in Unix-ähnlichen Systemen (Es dauert nur wenige Minuten).

Signale, werden Software-Interrupts an ein (laufendes) Programm gesendet, um anzuzeigen, dass ein wichtiges Ereignis eingetreten ist.

Die Ereignisse können von Benutzeranforderungen bis zu unzulässigem Speicherzugriff variieren     Fehler. Einige Signale, wie das Unterbrechungssignal, zeigen an, dass a     Benutzer hat das Programm gebeten, etwas zu tun, das nicht in der üblichen ist     Ablauf der Kontrolle.

Es gibt verschiedene Arten von Signalen, die wir verwenden können - um eine vollständige Liste aller verfügbaren / möglichen Signale zu erhalten.$ kill -l" Befehl: enter image description here

In der obigen Ausgabe ist deutlich sichtbar, dass jedes Signal eine 'hatSignalnummer(z. B. 1, 2, 3) und a 'Signalname"(z. B. SIGUP, SIGINT, SIGQUIT) assoziiert. Für eine detaillierte Suche, was jedes einzelne Signal macht, besuche dieses Verknüpfung.

Schließlich, auf die Frage "Warum Nummer 9 in Töte -9 Befehl":

Es gibt mehrere Methoden, Signale an ein Programm oder Skript zu senden. Eine der gebräuchlichsten Methoden zum Senden von Signalen ist die Verwendung der töten Befehl - die grundlegende Syntax ist:

$ kill -signal pid

Wo das Signal ist entweder die Nummer oder Name des Signals, gefolgt von dem Prozess Id (pid), an den das Signal gesendet wird.

Beispielsweise - -SIGKILL (oder -9), Signal tötet den Prozess sofort.

$ kill -SIGKILL 1001

und

$ kill -9 1001

Beide Befehle sind dasselbe, d. h. oben haben wir den 'Signalnamen' verwendet, und später haben wir 'Signalnummer' verwendet.

Urteil: Man hat eine offene Wahl, ob man den 'Signalnamen' oder 'Signalnummer' mit dem ' töten Befehl.


25
2018-02-27 14:00



Es ist ein Verweis auf "Revoulution 9" von den Beatles. Eine Sammlung von aneinander gereihten Soundclips und gefundenen Geräuschen. Diese Aufnahme zeigt John Lennon, der immer wieder "Number 9, Number 9 ..." wiederholt. Dieses Lied zog 1969 weitere Aufmerksamkeit auf sich, als John entdeckt wurde, dass John rückwärts spielte zu sagen: "Mach mich an, toter Mann ..."

Daher war das neunte Signal dazu bestimmt, das tödlichste der Tötungssignale zu sein.


17
2018-01-15 14:52



Es gibt eine sehr lange Liste von Unix-Signalen, die Sie ansehen können auf Wikipedia. Etwas verwirrend, können Sie tatsächlich verwenden kill um ein Signal an einen Prozess zu senden. Zum Beispiel, kill -SIGSTOP 12345 zwingt Prozess 12345, seine Ausführung anzuhalten, während kill -SIGCONT 12345 sagt ihm, dass er fortfahren soll. Eine etwas weniger kryptische Version von kill -9 ist kill -SIGKILL.


7
2018-03-30 23:32



Ich denke nicht, dass es eine Bedeutung für Nummer 9 gibt. Darüber hinaus, trotz des allgemeinen Glaubens, kill wird nicht nur zum Töten von Prozessen verwendet, sondern sendet auch ein Signal an einen Prozess. Wenn Sie wirklich neugierig sind, können Sie lesen Hier und Hier.


4
2018-03-30 23:32



SIGKILL verwendet, um den Prozess zu beenden. SIGKILL kann nicht ignoriert oder behandelt werden. In Linux, Wege SIGKILL zu geben.

**kill -9 <process_pid> 
kill -SIGKILL <process_pid> 
killall -SIGKILL <process_name>
killall -9 <process_name>** 

1
2018-04-04 05:58



warum kill -9: die Zahl 9 in der Liste der Signale wurde als SIGKILL in Bezug auf "töte die 9 Leben einer Katze" gewählt.


1
2018-05-26 16:17



Beide sind die gleichen wie kill - sigkill processID, kill -9 processID. Es ist im Grunde zur erzwungenen Beendigung des Prozesses.


0
2017-11-19 12:45



Geben Sie den Befehl kill -l in Ihre Shell ein

Sie werden das bei der 9. Nummer finden [ 9) SIGKILL ], so kann man verwenden Töte entweder -9 oder töte -SIGKILL

SIGKILL ist sicher, Kill-Signal, Es kann nicht entfernt, ignoriert oder behandelt werden. Es funktioniert immer mit seinem Standardverhalten, nämlich den Prozess zu beenden.


0
2018-03-26 11:05