linux程序狀態D和Z的處理

2021-08-26 19:39:22 字數 2568 閱讀 2653

原始文章:

關於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)

b:程序正在等待更多的記憶體頁

c(cpu usage):cpu利用率的估算值

清除zombie(殭屍)程序可以使用如下方法:

1> kill –18 ppid (ppid是其父程序)

這個訊號是告訴父程序,該子程序已經死亡了,請收回分配給他的資源。

2>如果不行則看能否終止其父程序(如果其父程序不需要的話)。先看其父程序又無其他子程序,如果有,可能需要先kill其他子程序,也就是兄弟程序。方法是:

kill –15 pid1 pid2(pid1,pid2是殭屍程序的父程序的其它子程序)。

然後再kill父程序:kill –15 ppid

這樣殭屍程序就可能被完全殺掉了。

關於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)

b:程序正在等待更多的記憶體頁

c(cpu usage):cpu利用率的估算值

清除zombie(殭屍)程序可以使用如下方法:

1> kill –18 ppid (ppid是其父程序)

這個訊號是告訴父程序,該子程序已經死亡了,請收回分配給他的資源。

2>如果不行則看能否終止其父程序(如果其父程序不需要的話)。先看其父程序又無其他子程序,如果有,可能需要先kill其他子程序,也就是兄弟程序。方法是:

kill –15 pid1 pid2(pid1,pid2是殭屍程序的父程序的其它子程序)。

然後再kill父程序:kill –15 ppid

這樣殭屍程序就可能被完全殺掉了。

Linux 殭屍程序 Z狀態 和孤兒程序

先了解下程序都有什麼狀態 程序狀態 就緒,阻塞,執行 linux下程序狀態 執行狀態 並不意味著程序一定在執行中,它表明程序在執行中,或在執行佇列裡 只要拿到時間片就能執行 可中斷休眠狀態 s 當前處於休眠狀態,但這種休眠可以被打斷 也稱睡眠狀態 不可中斷休眠狀態 d 當前處於休眠狀態,但這種休眠不...

linux程序狀態D

程序狀態d,往往是由於 i o 資源得不到滿足而引發等待 舉個例子,當 nfs 服務端關閉之時,若未事先 umount 相關目錄,在 nfs 客戶端執行 df 就會掛住整個登入會話,按 ctrl c ctrl z 都無濟於事。斷開連線再登入,執行 ps axf 則看到剛才的 df 程序狀態位已變成了...

linux下如何殺掉D狀態程序

d狀態 disk sleep 程序用kill 9命令是不管用的,最簡單的方法就是reboot,除此還可以修改核心,將其程序狀態轉化為別的狀態,然後kill掉。新建資料夾,cd進去,新建killd.c 檔案,如下 include include needed by all modules includ...