Ich verstehe, dass es kein Thema ist, ich konnte nirgendwo online etwas finden und ich dachte, dass Programmiergurus in der Community dies vielleicht wissen könnten.
Ich benutze normalerweise
kill -9 pid
den Job zu töten. Ich habe mich immer gefragt, woher 9 stammt. Ich habe es online nachgeschlagen und es steht
"9 bedeutet KILL-Signal, das nicht abfangbar oder ignorierbar ist. Mit anderen Worten, es würde signalisieren, dass der Prozess (eine laufende Anwendung) sofort beendet wird" (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 aufgrund der Architektur von Unix?
Antworten:
Eine Liste anderer Signale finden Sie im Wikipedia-Artikel zu Unix- Signalen. SIGKILL hat gerade die Nummer 9 bekommen.
Sie können die Mnemonik ebenso wie die Zahlen verwenden:
quelle
Es gab 8 andere Signale, die sie zuerst hatten.
quelle
Ich denke, eine bessere Antwort hier ist einfach:
Was die "Bedeutung" von 9 betrifft ... würde ich sagen, dass es wahrscheinlich keine gibt. Laut der Linux-Programmierschnittstelle (S. 388) :
quelle
Zuerst müssen Sie wissen, was Signale in Unix-ähnlichen Systemen sind (dies dauert nur wenige Minuten).
Es gibt verschiedene Arten von Signalen, die wir verwenden können. Um eine vollständige Liste aller verfügbaren / möglichen Signale zu erhalten, verwenden Sie den Befehl " $ kill -l ":
In der obigen Ausgabe ist deutlich zu erkennen, dass jedem Signal eine ' Signalnummer ' (z. B. 1, 2, 3) und ein ' Signalname ' (z. B. SIGUP, SIGINT, SIGQUIT) zugeordnet sind. Besuchen Sie diesen Link , um einen detaillierten Überblick über die Funktionen der einzelnen Signale zu erhalten .
Zum Schluss noch die Frage "Warum Nummer 9 im Befehl kill -9 ":
Es gibt verschiedene Methoden, um Signale an ein Programm oder Skript zu senden. Eine der am häufigsten verwendeten Methoden zum Senden von Signalen ist die Verwendung des Befehls kill. Die grundlegende Syntax lautet:
Dabei ist das Signal entweder die Nummer oder der Name des Signals, gefolgt von der Prozess-ID (pid), an die das Signal gesendet wird.
Beispiel: -SIGKILL (oder -9 ), Signal beendet den Prozess sofort.
und
Beide Befehle sind dasselbe, dh oben haben wir den 'Signalnamen' und später die 'Signalnummer' verwendet.
Urteil : Man hat die freie Wahl, ob man mit dem Befehl kill den 'Signalnamen' oder die 'Signalnummer' verwendet .
quelle
Es ist ein Hinweis auf "Revoulution 9" der Beatles. Eine Aufnahme von aneinandergereihten Soundclips und gefundenen Geräuschen. Diese Aufnahme zeigt John Lennon, der immer wieder "Nummer 9, Nummer 9 ..." wiederholt. Außerdem erregte dieses Lied 1969 weitere Aufmerksamkeit, als entdeckt wurde, dass John rückwärts gespielt schien zu sagen "Mach mich an, toter Mann ..."
Daher war das neunte Signal dazu bestimmt, das tödlichste der Tötungssignale zu sein.
quelle
Es gibt eine sehr lange Liste von Unix-Signalen, die Sie auf Wikipedia anzeigen können . Etwas verwirrend ist, dass Sie tatsächlich
kill
jedes Signal an einen Prozess senden können. Erzwingt beispielsweise, dass derkill -SIGSTOP 12345
Prozess 12345 seine Ausführung unterbricht, während erkill -SIGCONT 12345
angewiesen wird, fortzufahren. Eine etwas weniger kryptische Version vonkill -9
istkill -SIGKILL
.quelle
kill
. Wahrscheinlich, weil das Standardverhalten für die meisten der ursprünglichen Signale (Nummern 1 bis 15) darin bestand, den Prozess zu beenden.Ich glaube nicht, dass Nummer 9 eine Bedeutung hat. Außerdem wird sie trotz allgemeiner Überzeugung
kill
nicht nur zum Beenden von Prozessen verwendet, sondern auch zum Senden eines Signals an einen Prozess. Wenn Sie wirklich neugierig sind, können Sie hier und hier lesen .quelle
Warum -9 töten? Die Nummer 9 in der Liste der Signale wurde als SIGKILL in Bezug auf "Töte die 9 Leben einer Katze" ausgewählt.
quelle
SIGKILL
Verwenden Sie, um den Prozess zu beenden.SIGKILL
kann nicht ignoriert oder behandelt werden. Unter Linux gibt es Möglichkeiten zu gebenSIGKILL
.quelle
Geben Sie den Befehl kill -l in Ihre Shell ein
Sie werden feststellen, dass bei der 9. Nummer [ 9) SIGKILL ] man entweder kill -9 oder kill -SIGKILL verwenden kann
SIGKILL ist sicher ein Kill-Signal. Es kann nicht verschoben, ignoriert oder gehandhabt werden. Es funktioniert immer mit seinem Standardverhalten, das darin besteht, den Prozess abzubrechen.
quelle
Das
-9
ist die signal_number und gibt an, dass die gesendete Kill-Nachricht vom Typ KILL (nicht abfangbar, nicht ignorierbar) sein soll.Welches ist das gleiche wie unten.
Ohne Angabe einer signal_number ist der Standardwert -15, was TERM (Software Termination Signal) ist. Die Eingabe
kill <pid>
ist die gleiche wiekill -15 <pid>
.quelle
Beide sind identisch mit kill -sigkill processID, kill -9 processID. Es ist im Grunde für die erzwungene Beendigung des Prozesses.
quelle
Es gibt einige Prozesse, die nicht so getötet werden können wie "kill% 1". Wenn wir diesen Prozess beenden müssen, wird ein spezieller Befehl verwendet, um den Prozess zu beenden, der kill -9 ist. Öffnen Sie z. B. vim und stoppen Sie, wenn Sie mit Strg + Z Jobs anzeigen und nach dem Anwenden des Kill-Prozesses dieser Prozess nicht beendet wird. Daher verwenden wir hier den Befehl kill -9 zum Beenden.
quelle