詳見:
perl語言專家randal schwartz在一篇短文裡這樣寫:
no no no.不要使用kill -9.
它沒有給程序留下善後的機會:
1) 關閉socket鏈結
2) 清理臨時檔案
3) 將自己將要被銷毀的訊息通知給子程序
4) 重置自己的終止狀態
等等。通常,應該傳送15,等一兩秒鐘,如果沒效果,傳送2,如果還不行,傳送1。如果還不行,那你應該把那個程式刪掉,因為那個程式寫的太爛了!
不要使用kill -9。不要用收割機來修剪花盆裡的花。
總之,在使用kill -9前,你應該先使用kill -15,給目標程序乙個清理善後工作的機會。(程序也許無法捕捉或直接忽略sigkill訊號,但它們可以,通常也是能夠捕捉sigterm訊號的。)如果你不留機會讓程序完成清理工作,它們會留下一些不完整的檔案或狀態,當系統重啟時,程式將無法理解這些狀態。
strace/truss,ltrace和gdb都是檢視乙個卡住的程序因何卡住的好工具。(solaris裡的truss -u非常好用;)solaris裡還有一些非常有用的/proc相關的工具,有一些已經被移植到了linux上。
kill和kill 9的區別
kill是linux下常見的命令。其man手冊的功能定義如下 kill send a signal to a process 明朗了,其實kill就是給某個程序id傳送了乙個訊號。預設傳送的訊號是sigterm,而kill 9傳送的訊號是sigkill,即exit。exit訊號不會被系統阻塞,所以k...
kill與kill 9的區別
kill命令格式 kill signal pid pid是程序號,可以用 ps 命令查出 signal是傳送給程序的訊號,預設引數下,kill 傳送sigterm 15 訊號給程序,告訴程序,你需要被關閉,請自行停止執行並退出。kill 9 傳送sigkill訊號給程序,告訴程序,你被終結了,請立刻...
kill和kill 9的區別
kill和kill 9 兩個命令在linux中都有殺死程序的效果,執行kill命令,系統會傳送乙個sigterm訊號給對應的程式。當程式接收到該signal訊號後,有以下幾種情況 1 程式立刻停止 2 當程式釋放相應資源後再停止 3 程式可能仍然繼續執行 大部分程式接收到sigterm訊號後,會先釋...