Posted on 2009-02-17 17:46
Prayer 閱讀(1219)
評(píng)論(0) 編輯 收藏 引用 所屬分類:
LINUX/UNIX/AIX
這些進(jìn)程已經(jīng)死亡,但沒有釋放系統(tǒng)資源,包括內(nèi)存和一些一些系統(tǒng)表等,如果這樣的進(jìn)程很多,會(huì)引發(fā)系統(tǒng)問題。用ps -el看出的進(jìn)程狀態(tài)如果是Z,就是僵尸進(jìn)程。
ps -ef|grep defunc可以找出僵尸進(jìn)程.
有些ZOMBIE進(jìn)程時(shí)用kill -9也不能殺死,而且消耗了很多系統(tǒng)資源不能釋放,如果系統(tǒng)在shutdown時(shí)發(fā)出信息:some process wouldn’t die. 這就意味這有些進(jìn)程不能被reboot發(fā)出的kill –9殺掉,這些很可能就是僵尸進(jìn)程。
可以用ps 的 – l 選項(xiàng),得到更詳細(xì)的進(jìn)程信息.
F(Flag):一系列數(shù)字的和,表示進(jìn)程的當(dāng)前狀態(tài)。這些數(shù)字的含義為:
00:若單獨(dú)顯示,表示此進(jìn)程已被終止。
01:進(jìn)程是核心進(jìn)程的一部分,常駐于系統(tǒng)主存。如: sched、 vhand 、bdflush 等。
02:Parent is tracing process.
04 :Tracing parent's signal has stopped the process; the parent is waiting ( ptrace(S)).
10:進(jìn)程在優(yōu)先級(jí)低于或等于25時(shí),進(jìn)入休眠狀態(tài),而且不能用信號(hào)喚醒,例如在等待一個(gè)inode被創(chuàng)建時(shí)
20:進(jìn)程被裝入主存(primary memory)
40:進(jìn)程被鎖在主存,在事務(wù)完成前不能被置換 e
S(state of? the process )
O:進(jìn)程正在處理器運(yùn)行
S:休眠狀態(tài)(sleeping)
R:等待運(yùn)行(runable)
I:空閑狀態(tài)(idle)
Z:僵尸狀態(tài)(zombie)
T:跟蹤狀態(tài)(Traced)
B:進(jìn)程正在等待更多的內(nèi)存頁
C(cpu usage):cpu利用率的估算值
清除ZOMBIE(僵尸)進(jìn)程可以使用如下方法:
1> kill –18 PPID (PPID是其父進(jìn)程)
這個(gè)信號(hào)是告訴父進(jìn)程,該子進(jìn)程已經(jīng)死亡了,請(qǐng)收回分配給他的資源。
2>如果不行則看能否終止其父進(jìn)程(如果其父進(jìn)程不需要的話)。先看其父進(jìn)程又無其他子進(jìn)程,如果有,可能需要先kill其他子進(jìn)程,也就是兄弟進(jìn)程。方法是:
kill –15 PID1 PID2(PID1,PID2是僵尸進(jìn)程的父進(jìn)程的其它子進(jìn)程)。
然后再kill父進(jìn)程:kill –15 PPID
這樣僵尸進(jìn)程就可能被完全殺掉了。