盡量避免直接使用 kill 9

2021-08-10 23:24:16 字數 757 閱讀 3970

kill -9

沒有給程序留下善後的機會:

1)關閉socket鏈結;

2)清理臨時檔案;

3)將自己快要給銷毀的訊息通知給子程序;

4)重置自己的終止狀態。

通常,應該傳送 15,等一兩秒鐘,如果沒有效果,傳送2,如果還不行,傳送1。

總之,在使用 kill -9 前,你應該先使用 kill -15,給目標程序乙個清理善後工作的機會(程序也許無法捕捉或直接忽略sigkill訊號,但他們可以,通常也是能夠捕捉 sigterm 訊號的)。

如果你不留機會讓程序完成清理工作,他們會留下一些不完整的檔案或狀態,當系統重啟時,程式將無法理解這些狀態。

kill 命令

-l (l的小寫):列出目前 kill 能夠使用的訊號有哪些,訊號代表給予後面接的那個工作什麼樣的指示,用 man 7 signal 可知:

-1:重新讀取一次引數的配置檔案(類似reload)

-2:代表與由鍵盤輸入【ctrl】-c 同樣的操作;

-9:立刻強制刪除乙個工作;

-15:以正常的程式方式終止一項工作;

strace/truss,ltrace和gdb都是檢視乙個卡住的程序因何卡住的好工具。

另外,solaris 裡的 truss -u 非常好用,solaris 裡還有一些非常有用的 /proc 相關工具,有一些已經被移植到 linux 上。

參考:

不要使用kill -9

不要使用kill 9

kill 9 沒有給程序留下善後的機會 1 關閉socket鏈結 2 清理臨時檔案 3 將自己快要給銷毀的訊息通知給子程序 4 重置自己的終止狀態 通常,應該傳送15,等一兩秒鐘,如果沒有效果,傳送2,如果還不行,傳送1.總之,在使用kill 9前,你應該先使用kill 15,給目標程序乙個清理善後...

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訊號給程序,告訴程序,你被終結了,請立刻...