Linux kill、kill-1五、kill-9區別

進程狀態轉換圖html

kill和kill -9,兩個命令在linux中都有殺死進程的效果,然而兩命令的執行過程卻大有不一樣,在程序中若是用錯了,可能會形成莫名其妙的現象。python

執行kill(不加 -* 默認kill -15)命令,系統會發送一個SIGTERM信號給對應的程序。當程序接收到該signal信號後,將會發生如下事情:linux

程序馬上中止tomcat

當程序釋放相應資源後再中止htm

程序可能仍然繼續運行進程

大部分程序接收到SIGTERM信號後,會先釋放本身的資源,而後再中止。可是也有程序可能接收信號後,作一些其餘的事情(若是程序正在等待IO,可能就不會立馬作出響應,我在使用wkhtmltopdf轉pdf的項目中遇到這現象),也就是說,SIGTERM多半是會被阻塞的。資源

然而kill -9命令,系統給對應程序發送的信號是SIGKILL,即exit。exit信號不會被系統阻塞,因此kill -9能順利殺掉進程。it

 小結:在使用 kill -9 前,應該先使用 kill -15,給目標進程一個清理善後工做的機會。若是沒有,可能會留下一些不完整的文件或狀態,從而影響服務的再次啓動。class

殺掉tomcaipdf

ps -ef|grep tomcat|grep -v|awk -F '{print $2}'|xargs kill -9

等同於

kill -9 `ps -ef | grep 'python wkr_main.py' | awk '{print $2}'`

xargs接收管道前面傳過來的字符

相關文章
相關標籤/搜索