這些進程已經死亡,但沒有釋放系統資源,包括內存和一些一些系統表等,若是這樣的進程不少,會引起系統問題。用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
這樣殭屍進程就可能被徹底殺掉了。node