国产三级农村妇女在线,国产精品毛片a∨一区二区三区,国产乱子伦视频大全,国产精品色拉拉,国产欧美日韩一区二区三区,

首頁 > 技術(shù) > Linux

linux僵尸進(jìn)程是什么意思

Linux 2022-11-19 13:19:15

Linux僵尸進(jìn)程是一個(gè)已經(jīng)終止但是其父進(jìn)程尚未對其進(jìn)行善后處理獲取終止進(jìn)程的有關(guān)信息的進(jìn)程;僵尸進(jìn)程是當(dāng)子進(jìn)程比父進(jìn)程先結(jié)束,而父進(jìn)程又沒有回收子進(jìn)程,釋放子進(jìn)程占用的資源,此時(shí)子進(jìn)程將成為一個(gè)僵尸進(jìn)程。

程序員必備接口測試調(diào)試工具:立即使用
Apipost = Postman + Swagger + Mock + Jmeter
Api設(shè)計(jì)、調(diào)試、文檔、自動化測試工具
后端、前端、測試,同時(shí)在線協(xié)作,內(nèi)容實(shí)時(shí)同步

教程操作環(huán)境:linux7.3系統(tǒng)、Dell G3電腦。

linux僵尸進(jìn)程是什么意思

僵尸進(jìn)程是指一個(gè)已經(jīng)終止、但是其父進(jìn)程尚未對其進(jìn)行善后處理獲取終止進(jìn)程的有關(guān)信息的進(jìn)程

僵尸進(jìn)程是當(dāng)子進(jìn)程比父進(jìn)程先結(jié)束,而父進(jìn)程又沒有回收子進(jìn)程,釋放子進(jìn)程占用的資源,此時(shí)子進(jìn)程將成為一個(gè)僵尸進(jìn)程。如果父進(jìn)程先退出 ,子進(jìn)程被init接管,子進(jìn)程退出后init會回收其占用的相關(guān)資源

我們都知道進(jìn)程的工作原理。我們啟動一個(gè)程序,開始我們的任務(wù),然后等任務(wù)結(jié)束了,我們就停止這個(gè)進(jìn)程。 進(jìn)程停止后, 該進(jìn)程就會從進(jìn)程表中移除。

你可以通過 System-Monitor 查看當(dāng)前進(jìn)程。

In UNIX System terminology, a process that has terminated,but whose parent has not yet waited for it, is called a zombie. 在UNIX 系統(tǒng)中,一個(gè)進(jìn)程結(jié)束了,但是他的父進(jìn)程沒有等待(調(diào)用wait / waitpid)他, 那么他將變成一個(gè)僵尸進(jìn)程。 但是如果該進(jìn)程的父進(jìn)程已經(jīng)先結(jié)束了,那么該進(jìn)程就不會變成僵尸進(jìn)程, 因?yàn)槊總€(gè)進(jìn)程結(jié)束的時(shí)候,系統(tǒng)都會掃描當(dāng)前系統(tǒng)中所運(yùn)行的所有進(jìn)程, 看有沒有哪個(gè)進(jìn)程是剛剛結(jié)束的這個(gè)進(jìn)程的子進(jìn)程,如果是的話,就由Init 來接管他,成為他的父進(jìn)程

擴(kuò)展知識

怎么查看僵尸進(jìn)程

利用命令ps,可以看到有父進(jìn)程ID為1的進(jìn)程是孤兒進(jìn)程;s(state)狀態(tài)為Z的是僵尸進(jìn)程。

注意:孤兒進(jìn)程(orphan process)是尚未終止但已停止(相當(dāng)于前臺掛起)的進(jìn)程,但其父進(jìn)程已經(jīng)終止,由init收養(yǎng);而僵尸進(jìn)程則是已終止的進(jìn)程,其父進(jìn)程不一定終止。

怎樣來清除僵尸進(jìn)程

改寫父進(jìn)程,在子進(jìn)程死后要為它收尸。具體做法是接管SIGCHLD信號。子進(jìn)程死后, 會發(fā)送SIGCHLD信號給父進(jìn)程,父進(jìn)程收到此信號后,執(zhí)行 waitpid()函數(shù)為子進(jìn)程收尸。這是基于這樣的原理:就算父進(jìn)程沒有調(diào)用wait,內(nèi)核也會向它發(fā)送SIGCHLD消息,盡管對的默認(rèn)處理是忽略, 如果想響應(yīng)這個(gè)消息,可以設(shè)置一個(gè)處理函數(shù)。

把父進(jìn)程殺掉。父進(jìn)程死后,僵尸進(jìn)程成為"孤兒進(jìn)程",過繼給1號進(jìn)程init,init始終會負(fù)責(zé)清理僵尸進(jìn)程,關(guān)機(jī)或重啟后所有僵尸進(jìn)程都會消失。

例如,如果 PID 5878 是一個(gè)僵尸進(jìn)程,它的父進(jìn)程是 PID 4809,那么要?dú)⑺澜┦M(jìn)程 (5878),您可以結(jié)束父進(jìn)程 (4809):

$ sudo kill -9 4809  #4809 is the parent, not the zombie
登錄后復(fù)制

殺死父進(jìn)程時(shí)要非常小心,如果一個(gè)進(jìn)程的父進(jìn)程就是 PID 1 ,并且你還殺死了它,那么系統(tǒng)將直接重啟!

推薦學(xué)習(xí):Linux視頻教程

以上就是linux僵尸進(jìn)程是什么意思的詳細(xì)內(nèi)容,更多請關(guān)注其它相關(guān)文章!

TAg

加載中~

本網(wǎng)站LOGO受版權(quán)及商標(biāo)保護(hù),版權(quán)登記號:國作登字-2022-F-10126915,未經(jīng)湖南木星科技官方許可,嚴(yán)禁使用。
Copyright ? 2012-2022 湖南木星科技有限公司(木星網(wǎng))版權(quán)所有
轉(zhuǎn)載內(nèi)容版權(quán)歸作者及來源網(wǎng)站所有,本站原創(chuàng)內(nèi)容轉(zhuǎn)載請注明來源,商業(yè)媒體及紙媒請先聯(lián)系:aishangyiwan@126.com

工信部備案號:湘ICP備19012813號-5