在linux環境,大多數人採用 kill -9 pid 停止一個服務器進程,但kill -9 常會帶來一些問題;linux
在Linux信號機制中,存在多種進程中斷信號(Linux信號列表 )。其中比較典型的有 shell
HUP 1 終端斷線 INT 2 中斷 QUIT 3 退出 TERM 15 終止 KILL 9 強制終止 CONT 18 繼續 STOP 19 暫停
SIGNKILL(9) 和 SIGNTERM(15) 的區別在於:
SIGNKILL(9) 的效果是當即殺死進程. 該信號不能被阻塞, 處理和忽略。
SIGNTERM(15) 的效果是正常退出進程,退出前能夠被阻塞或回調處理。而且它是Linux缺省的程序中斷信號。服務器
標準的kill進程方式:kill pid
google
註釋: 標準的kill命令,默認採用信號(signal)號是15,一般都能達到目的,終止有問題的進程,並把進程的資源釋放給系統。然而,若是進程啓動了子進程,只殺死父進程,子進程仍在運行,所以仍消耗資源。爲了防止這些所謂的「殭屍進程」,應確保在殺死父進程以前,先殺死其全部的子進程。 spa