2013-10-06 9 views
12

Ich habe nur Kill Switch Flags mit einem Schlafprozess getestet.Unterschied zwischen "Killed" und "Terminated"

Zuerst versuchte ich es getötet mit -15

[email protected]:~/Desktop/expermiments$ ps cax | grep 10005 
10005 pts/2 S+  0:00 sh 
[email protected]:~/Desktop/expermiments$ kill -15 10005 

Und der Prozess wurde

beendet
[email protected]:~/Desktop/expermiments$ sh testscript.sh 
This is a script which sleeps for few seconds .. 
Terminated 

Dann tötete ich sie mit - 9

[email protected]:~/Desktop/expermiments$ ps -ef | grep testscript.sh 
xtechkid 10059 9852 0 13:48 pts/2 00:00:00 sh testscript.sh 
xtechkid 10064 10007 0 13:48 pts/4 00:00:00 grep --color=auto testscript.sh 
[email protected]:~/Desktop/expermiments$ kill -9 10059 

Und der Prozess wurde getötet

Was ist der Unterschied?

Antwort

21

Das 'terminate'-Signal, SIGTERM, ist ein Signal, das in einem Programm abgefangen werden kann. Oft fangen Prozesse, die im Hintergrund ausgeführt werden sollen, dieses Signal auf und starten einen Shutdown-Prozess, was zu einem sauberen Beenden führt. Das Kill-Signal SIGKILL kann nicht abgefangen werden. Wenn dies an einen Prozess gesendet wird, führt dies zu einer abrupten Beendigung dieses Programms.

Wenn Sie beispielsweise Ihren Computer herunterfahren oder neu starten, wird in der Regel ein SIGTERM an die laufenden Prozesse gesendet, damit diese auf eine saubere Weise beendet werden können, wenn sie dies unterstützen. Dann wird nach ein paar Sekunden ein SIGKILL an die Prozesse gesendet, die noch laufen, so dass die verwendeten Ressourcen gewaltsam freigegeben werden (z. B. verwendete Dateien) und die Abschaltsequenz fortgesetzt werden kann (z. B. das Aushängen von Dateisystemen).

4

Terminate: Es speichert alle Ihre Daten vor dem Herunterfahren (Schreiben von Daten aus dem RAM auf der Festplatte, Protokolle, etc.)

Kill: Es ist mehr wie PC-Netz drücken und Reset-Taste. Es speichert keine Protokolle oder andere Daten.