解釋:
殭屍程序是指的父程序已經退出,而該程序dead之後沒有程序接受,就成為殭屍程序.(zombie)程序
產生原因:
每個unix程序在程序表裡都有乙個進入點(entry),ps命令檢視到的程序資訊就存放在這裡。子程序結束之後,核心會釋放掉該程序占用的所有資源,但該程序的程序號、退出碼、退出狀態等資訊還保留,指導其父程序接手並釋放這些資訊。
在unix 系統中,如果乙個程序結束了,但父程序沒有接受並釋放程序號、退出碼、退出狀態等資訊,則該程序變為殭屍程序。
檢視方式:
ps aux | grep 'z'
即可檢視到系統中現有的殭屍程序。
殭屍程序對系統的影響:
殭屍程序對系統的影響在於過多的殭屍程序會導致系統無法分配新的可用程序號
如何處理殭屍程序:
殺死殭屍程序的父程序,則系統init程序會接手殭屍程序,負責清理。
如何構造殭屍程序:
c語言版
#include #include #include int main(void)
}pause(); /*指令碼暫停,父程序暫停,產生13個殭屍程序*/
/* 父程序waitpid方法,獲取到殭屍程序exit之後的資訊,則無殭屍程序產生
for (i = 12; i >= 0; --i)
waitpid(pids[i], null, 0);
*/ return 0;
}
殭屍程序和如何刪除殭屍程序
當乙個子程序結束後,他的父程序沒有等待他 wait waitpid 清除他的所有資源時,它就變成乙個殭屍程序。在linux系統中,在每個程序退出的時候,核心釋放該程序所有的資源,包括開啟的檔案,占用的記憶體等。但是仍然為其保留一定的資訊 包括程序號the process id,退出狀態the ter...
檢視殭屍程序並殺掉殭屍程序
在運維過程中,我們經常會碰到機器由於某幾個特殊的殭屍程序造成整台伺服器上的程序異常卡死,負載變高。例如以下 其中,存在8個殭屍程序,並且程序19712的cpu使用異常。檢視具體的殭屍程序有哪些 發現這些子殭屍程序的父程序即為19712程序。其對應的其實就是namenode程序 解決辦法 1 如果業務...
Defunct程序 殭屍程序
下面談談 defunct 程序,中文翻譯叫殭屍程序。下文整理於網路以及apue一書。一 什麼是殭屍程序 在unix 系統中,乙個程序結束了,但是他的父程序沒有等待 呼叫wait waitpid 他,那麼他將變成乙個殭屍程序。當用ps命令觀察程序的執行狀態時,看到這些程序的狀態列為defunct。殭屍...