關於zombie程序:
這些程序已經死亡,但沒有釋放系統資源,包括記憶體和一些一些系統表等,如果這樣的程序很多,會引發系統問題。用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)
c(cpu usage):cpu利用率的估算值
清除zombie(殭屍)程序可以使用如下方法:
1> kill –18 ppid (ppid是其父程序)
這個訊號是告訴父程序,該子程序已經死亡了,請收回分配給他的資源。
2>如果不行則看能否終止其父程序(如果其父程序不需要的話)。先看其父程序又無其他子程序,如果有,可能需要先kill其他子程序,也就是兄弟程序。方法是:
kill –15 pid1 pid2(pid1,pid2是殭屍程序的父程序的其它子程序)。
然後再kill父程序:kill –15 ppid
這樣殭屍程序就可能被完全殺掉了。
Linux 殭屍程序
怎樣產生殭屍程序的 乙個程序在呼叫exit命令結束自己的生命的時候,其實它並沒有真正的被銷毀,而是留下乙個稱為殭屍程序 zombie 的資料結構 系統呼叫 exit,它的作用是使程序退出,但也僅僅限於將乙個正常的程序變成乙個殭屍程序,並不能將其完全銷毀 在linux程序的狀態中,殭屍程序是非常特殊的...
linux殭屍程序
僵死程序 在unix程序模型中,程序是按照父程序產生子程序,子程序產生子子程序這樣的方式建立出完成各項相互協作功能的程序的。當乙個程序完成它的工作終止之後,它的父程序需要呼叫wait 或者waitpid 系統呼叫取得子程序的終止狀態。如果父程序沒有這麼做的話,子程序雖然已經退出了,但是在系統程序表中...
linux殭屍程序
殭屍程序是指子程序退出時,父程序並未對其發出的sigchild訊號進行適當處理,導致子程序停留在殭屍狀態等待其父程序為其收屍,這個狀態下的子程序就是殭屍程序。include include include int main int argc,char argv return 0 從上面的執行結果可以...