這些程序已經死亡,但沒有釋放系統資源,包括記憶體和一些一些系統表等,如果這樣的程序很多,會引發系統問題。用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僵死程序
乙個程序在呼叫exit命令結束自己的生命的時候,其實它並沒有真正的被銷毀,而是留下乙個稱為僵死程序 zombie 的資料結構 系統呼叫exit,它的作用是使程序退出,但也僅僅限於將乙個正常的程序變成乙個僵死程序,並不能將其完全銷毀 一 僵死程序的產生 在每個程序退出的時候,核心釋放該程序所有的資源,...
postgres kill僵死程序
在資料庫postgresql中,乙個客戶端到伺服器連線實際上是乙個tcp socket連線,tcp連線是虛連線,一方非正常退出 如斷電 另一方會繼續維持這個連線。舉個例子,乙個客戶端電腦正常連上伺服器後,強行拔掉電源造 為斷電,重新啟動電腦,再此連上伺服器。用sql語句select from pg ...