2012-12-13 38 views
0

使用kill命令格式的操作有什麼區別,在哪種情況下使用哪一個。使用kill -9與kill的區別SIGUSR2

kill -9 process-id 
kill SIGUSR2 process-id 
+2

'kill -l'爲您提供信號。 SIGUSR2(12)與SIGKILL(9)完全不同。除此之外,很大程度上取決於應用程序如何處理信號,即SIGUSR2。例如,你可以使用'signal'(在C中)來攔截SIGUSR2並執行你想要的任何任務。 – nvlass

+1

'kill SIGUSR2 pid'對我來說看起來像是一個kill語法錯誤。您可能對http://www.kernel.org/doc/man-pages/online/pages/man7/signal.7.html感興趣。 – melpomene

回答

3

如果你想發送SIGUSR2的過程中,你可以使用兩種:

kill -SIGUSR2 $pid 
kill -USR2 $pid 
kill -10 $pid # This will vary with platform 

如果你想發送SIGKILL的過程中,你可以使用兩種:

kill -SIGKILL $pid 
kill -KILL $pid 
kill -9 $pid 

不確定如何回答有關「哪種情況」的問題。如果你想發送USR2,那麼你使用前3個命令之一。如果你想發送KILL,你可以使用後者之一。您通常希望避免使用KILL,因爲收到KILL後的進程無法自行清理。另一方面,許多軟件寫得不好,只能通過SIGKILL來終止。通常認爲發送TERM更有禮貌,然後再等待一段時間再發送TERM,然後再等待,然後再發送KILLUSR2通常只對期待它的程序有用,並會以一些有用的方式作出響應。如果程序不期待信號,並且沒有采取任何行動來忽略它,則默認行爲是終止。

請注意,SIGUSR2的特定信號編號有所不同。取決於平臺,它可能是10,12,31,也可能是許多其他值。最好避免顯式設置值。唯一的信號號碼是standardized是1,2,3,6,9,14和15,所以9總是SIGKILL,但SIGUSR2可能(並且確實!)變化。