可能有人會發現有的時候,我們用ps指令查看線上的process時,會出現幾個程式為<defunct>的怪process,那是什麼東東?請看底下解說
如果在用ps指令看到<defunct>的process或是用top指令查看有出現zombie的數值,就表示系統裡面有存在已經無法正常運作的頻死process,這些process不僅可能沒有釋放所佔用的資源,而且也還佔用了process table的記錄,如果出現太多的話,很有可能造成系統的總process數超過NPROC的限制,而讓某些需要再fork process的程序會出現無法fork的錯誤訊息。
那麼遇到這種情況我們該怎麼處理?一般比較建議是重開機會比較好,如果上班時間無法重開的話,可以先嘗試以底下方式先試看看能否解決,要是不行的話,那也只能等重開機才有辦法將它清除了。
(1).先找出<defunct>的process之PID
# ps -ef | grep defunct
或
# ps -efl|awk ' $2 == "Z" {print $0}'
(2).下指令將其中止或清除
# kill -15 <pid>
或
# kill -9 <pid>
如果還是無法清除,只有重開機一途了~