1、查看系統(tǒng)是否有僵尸進(jìn)程
使用Top命令查找,當(dāng)zombie前的數(shù)量不為0時(shí),即系統(tǒng)內(nèi)存在相應(yīng)數(shù)量的僵尸進(jìn)程。
2、定位僵尸進(jìn)程
使用命令ps -A -ostat,ppid,pid,cmd |grep -e ‘^[Zz]’定位僵尸進(jìn)程以及該僵尸進(jìn)程的父進(jìn)程。
3、殺死僵尸進(jìn)程
使用Kill -HUP 僵尸進(jìn)程ID來(lái)殺死僵尸進(jìn)程,往往此種情況無(wú)法殺死僵尸進(jìn)程,此時(shí)就需要?dú)⑺澜┦M(jìn)程的父進(jìn)程。
kill -HUP 僵尸進(jìn)程父ID
然后使用上面第二步的語(yǔ)句查詢?cè)摻┦M(jìn)程是否被殺死。
4、參數(shù)解讀
ps -A -ostat,ppid,pid,cmd |grep -e ‘^[Zz]’
-A 參數(shù)列出所有進(jìn)程
-o 自定義輸出字段 stat(狀態(tài))、ppid(進(jìn)程父id)、pid(進(jìn)程id)、cmd(命令)
因?yàn)闋顟B(tài)為z或者Z的進(jìn)程為僵尸進(jìn)程,所以我們使用grep抓取stat狀態(tài)為zZ進(jìn)程
linux僵尸進(jìn)程及僵尸進(jìn)程的處理
僵尸進(jìn)程
(1)進(jìn)程中的指令已經(jīng)執(zhí)行完成,但是進(jìn)程PCB結(jié)構(gòu)還沒(méi)有回收。
即子進(jìn)程先于父進(jìn)程退出后,子進(jìn)程的PCB需要其父進(jìn)程釋放,但是父進(jìn)程并沒(méi)有釋放子進(jìn)程的PCB,這樣的子進(jìn)程就稱為僵尸進(jìn)程。
(2)父進(jìn)程未結(jié)束,子進(jìn)程結(jié)束,但父進(jìn)程沒(méi)有處理子進(jìn)程的退出狀態(tài)(當(dāng)子進(jìn)程先于父進(jìn)程結(jié)束,父進(jìn)程沒(méi)有獲取子進(jìn)程的退出碼,子進(jìn)程的PCB會(huì)保留一段時(shí)間等待父進(jìn)程在PCB中獲取退出碼,,且該進(jìn)程不可執(zhí)行,此時(shí)子進(jìn)程變成僵尸進(jìn)程)。
直到父進(jìn)程獲取到子進(jìn)程的退出狀態(tài),子進(jìn)程的PCB才會(huì)被移除。
我們的程序在退出的時(shí)候:return 0,exit(0),這個(gè)0就是退出碼(狀態(tài)信息),它存儲(chǔ)在當(dāng)前進(jìn)程的PCB中,會(huì)有一個(gè)整型值來(lái)存儲(chǔ)退出碼。
當(dāng)我們子進(jìn)程結(jié)束以后,會(huì)把退出碼寫到PCB中,然后希望父進(jìn)程可以獲得到這個(gè)退出碼,然后父進(jìn)程就可以看到子進(jìn)程是正常運(yùn)行結(jié)束還是出錯(cuò)退出。正常的話我們r(jià)eturn 0,失敗的話我們r(jià)eturn -1。
僵死進(jìn)程產(chǎn)生了,會(huì)有什么影響?
如果只有一兩個(gè)僵死進(jìn)程,沒(méi)有什么影響。
如果有很多個(gè)僵死進(jìn)程,持續(xù)不斷的產(chǎn)生,就有影響了,因?yàn)樽舆M(jìn)程的PCB如果沒(méi)有被釋放,進(jìn)程的PID就被一直占著,在內(nèi)核空間中,PCB本身是結(jié)構(gòu)體,會(huì)占用內(nèi)存空間,對(duì)系統(tǒng)軟硬件資源損耗,因此我們要避免僵死進(jìn)程的產(chǎn)生,父進(jìn)程有義務(wù)去處理!
Linux環(huán)境下查看以及殺死僵尸進(jìn)程
殺死僵尸進(jìn)程,方法三比較好用,推薦使用
1、查看所有的僵尸進(jìn)程
ps -A -ostat,pid,ppid | grep -e ‘[zZ]’
例:Z 110 101
這列出了僵尸進(jìn)程STAT列,進(jìn)程ID、父進(jìn)程ID
2、殺死所有僵尸進(jìn)程
方法一:通過(guò)向父進(jìn)程發(fā)送信號(hào)方式殺死,這種方法適用用父進(jìn)程可以處理信號(hào)的情況
kill -s SIGCHLD 101
方法二:通過(guò)父進(jìn)程殺死僵尸進(jìn)程
kill -HUP 僵尸進(jìn)程父ID
方法三:直接殺死所有僵尸進(jìn)程
ps -A -ostat,ppid,pid,cmd | grep -e ‘^[Zz]’ | awk -F“ ” ‘{ print $2 }’ | xargs kill -HUP
審核編輯:黃飛
-
Linux
+關(guān)注
關(guān)注
87文章
11329瀏覽量
209976 -
進(jìn)程
+關(guān)注
關(guān)注
0文章
204瀏覽量
13971 -
PCB
+關(guān)注
關(guān)注
1文章
1817瀏覽量
13204
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論