如何檢視僵死程序

2021-08-22 20:23:29 字數 1211 閱讀 6975

這些程序已經死亡,但沒有釋放系統資源,包括記憶體和一些一些系統表等,如果這樣的程序很多,會引發系統問題。用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 ...