進程中的殭屍趕快來殺

這些進程已經死亡,但沒有釋放系統資源,包括內存和一些一些系統表等,如果這樣的進程很多,會引發系統問題。用ps -el看出的進程狀態如果是Z,就是殭屍進程。 
  ps -ef|grep defunc可以找出殭屍進程. 
  有些ZOMBIE進程時用kill -9也不能殺死,而且消耗了很多系統資源不能釋放,如果系統在shutdown時發出信息:some process wouldn’t die. 這就意味這有些進程不能被reboot發出的kill –9殺掉,這些很可能就是殭屍進程。 

  可以用ps 的 – l 選項,得到更詳細的進程信息. 
  F(Flag):一系列數字的和,表示進程的當前狀態。這些數字的含義爲: 
  00:若單獨顯示,表示此進程已被終止。 
  01:進程是核心進程的一部分,常駐於系統主存。如:    sched、 vhand 、bdflush 等。 
  02:Parent is tracing process. 
  04 :Tracing parent's signal has stopped the process; the parent is waiting ( ptrace(S)). 
  10:進程在優先級低於或等於25時,進入休眠狀態,而且不能用信號喚醒,例如在等待一個inode被創建時    
  20:進程被裝入主存(primary memory) 
  40:進程被鎖在主存,在事務完成前不能被置換   e 
  S(state of the process ) 
  O:進程正在處理器運行  
  S:休眠狀態(sleeping) 
  R:等待運行(runable)    
  I:空閒狀態(idle) 
  Z:殭屍狀態(zombie)    
  T:跟蹤狀態(Traced) 
  B:進程正在等待更多的內存頁 
  C(cpu usage):cpu利用率的估算值 

  清除ZOMBIE(殭屍)進程可以使用如下方法: 
  1> kill –18 PPID (PPID是其父進程) 
  這個信號是告訴父進程,該子進程已經死亡了,請收回分配給他的資源。 
  2>如果不行則看能否終止其父進程(如果其父進程不需要的話)。先看其父進程又無其他子進程,如果有,可能需要先kill其他子進程,也就是兄弟進程。方法是: 
  kill –15 PID1 PID2(PID1,PID2是殭屍進程的父進程的其它子進程)。 
  然後再kill父進程:kill –15 PPID 

  這樣殭屍進程就可能被完全殺掉了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章