青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

旅途

如果想飛得高,就該把地平線(xiàn)忘掉

關(guān)于linux 僵尸進(jìn)程

  僵尸進(jìn)程是指的父進(jìn)程已經(jīng)退出,而該進(jìn)程dead之后沒(méi)有進(jìn)程接受,就成為僵尸進(jìn)程.(zombie)進(jìn)程

  怎樣產(chǎn)生僵尸進(jìn)程的:

  一個(gè)進(jìn)程在調(diào)用exit命令結(jié)束自己的生命的時(shí)候,其實(shí)它并沒(méi)有真正的被銷(xiāo)毀,而是留下一個(gè)稱(chēng)為僵尸進(jìn)程(Zombie)的數(shù)據(jù)結(jié)構(gòu)(系統(tǒng)調(diào)用 exit,它的作用是使進(jìn)程退出,但也僅僅限于將一個(gè)正常的進(jìn)程變成一個(gè)僵尸進(jìn)程,并不能將其完全銷(xiāo)毀)。

   在Linux進(jìn)程的狀態(tài)中,僵尸進(jìn)程是非常特殊的一種,它已經(jīng)放棄了幾乎所有內(nèi)存空間,沒(méi)有任何可執(zhí)行代碼,也不能被調(diào)度,僅僅在進(jìn)程列表中保留一個(gè)位 置,記載該進(jìn)程的退出狀態(tài)等信息供其他進(jìn)程收集,除此之外,僵尸進(jìn)程不再占有任何內(nèi)存空間。它需要它的父進(jìn)程來(lái)為它收尸,如果他的父進(jìn)程沒(méi)安裝 SIGCHLD信號(hào)處理函數(shù)調(diào)用wait或waitpid()等待子進(jìn)程結(jié)束,又沒(méi)有顯式忽略該信號(hào),那么它就一直保持僵尸狀態(tài),如果這時(shí)父進(jìn)程結(jié)束了, 那么init進(jìn)程自動(dòng)會(huì)接手這個(gè)子進(jìn)程,為它收尸,它還是能被清除的。但是如果如果父進(jìn)程是一個(gè)循環(huán),不會(huì)結(jié)束,那么子進(jìn)程就會(huì)一直保持僵尸狀態(tài),這就是 為什么系統(tǒng)中有時(shí)會(huì)有很多的僵尸進(jìn)程。

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

  利用命令ps,可以看到有標(biāo)記為Z的進(jìn)程就是僵尸進(jìn)程。

  怎樣來(lái)清除僵尸進(jìn)程:

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

  2.把父進(jìn)程殺掉。父進(jìn)程死后,僵尸進(jìn)程成為"孤兒進(jìn)程",過(guò)繼給1號(hào)進(jìn)程init,init始終會(huì)負(fù)責(zé)清理僵尸進(jìn)程.它產(chǎn)生的所有僵尸進(jìn)程也跟著消失。

?

===================================

在fork ()/execve()過(guò)程中,假設(shè)子進(jìn)程結(jié)束時(shí)父進(jìn)程仍存在,而父進(jìn)程fork()之前既沒(méi)安裝SIGCHLD信號(hào)處理函數(shù)調(diào)用waitpid()等待 子進(jìn)程結(jié)束,又沒(méi)有顯式忽略該信號(hào),則子進(jìn)程成為僵尸進(jìn)程,無(wú)法正常結(jié)束,此時(shí)即使是root身份kill -9也不能殺死僵尸進(jìn)程。補(bǔ)救辦法是殺死僵尸進(jìn)程的父進(jìn)程(僵尸進(jìn)程的父進(jìn)程必然存在),僵尸進(jìn)程成為"孤兒進(jìn)程",過(guò)繼給1號(hào)進(jìn)程init,init始 終會(huì)負(fù)責(zé)清理僵尸進(jìn)程。??

===========================================
在Linux中可以用
ps auwx??
發(fā)現(xiàn)僵尸進(jìn)程

a all w/ tty, including other users 所有窗口和終端,包括其他用戶(hù)的進(jìn)程
u user-oriented 面向用戶(hù)(用戶(hù)友好)
-w,w wide output 寬格式輸出
x processes w/o controlling ttys??

在僵尸進(jìn)程后面 會(huì)標(biāo)注




ps axf??
看進(jìn)程樹(shù),以樹(shù)形方式現(xiàn)實(shí)進(jìn)程列表


ps axm??
會(huì)把線(xiàn)程列出來(lái),在linux下進(jìn)程和線(xiàn)程是統(tǒng)一的,是輕量級(jí)進(jìn)程的兩種方式。

ps axu??
顯示進(jìn)程的詳細(xì)狀態(tài)
===========================================
killall
kill -15
kill -9
一般都不能殺掉 defunct進(jìn)程
用了kill -15,kill -9以后 之后反而會(huì)多出更多的僵尸進(jìn)程

kill -kill pid
fuser -k pid??


可以考慮殺死他的parent process,
kill -9 他的parent process
===========================================
一個(gè)已經(jīng)終止,但是其父進(jìn)程尚未對(duì)其進(jìn)行善后處理(獲取終止子進(jìn)程的有關(guān)信息、釋放它仍占用的資源)的進(jìn)程被稱(chēng)為僵死進(jìn)程(Zombie Process)。

避免zombie的方法:
1)在SVR4中,如果調(diào)用signal或sigset將SIGCHLD的配置設(shè)置為忽略,則不會(huì)產(chǎn)生僵死子進(jìn)程。另外,使用SVR4版的sigaction,則可設(shè)置SA_NOCLDWAIT標(biāo)志以避免子進(jìn)程僵死。

Linux中也可使用這個(gè),在一個(gè)程序的開(kāi)始調(diào)用這個(gè)函數(shù)

signal(SIGCHLD,SIG_IGN);??
??




2)調(diào)用fork兩次。程序8 - 5 實(shí)現(xiàn)了這一點(diǎn)。
3)用waitpid等待子進(jìn)程返回.??

===========================================

zombie進(jìn)程是僵死進(jìn)程。防止它的辦法,一是用wait,waitpid之類(lèi)的函數(shù)獲得

進(jìn)程的終止?fàn)顟B(tài),以釋放資源。另一個(gè)是fork兩次??
===========================================
defunct進(jìn)程只是在process table里還有一個(gè)記錄,其他的資源沒(méi)有占用,除非你的系統(tǒng)的process個(gè)數(shù)的限制已經(jīng)快超過(guò)了,zombie進(jìn)程不會(huì)有更多的壞處。
可能唯一的方法就是reboot系統(tǒng)可以消除zombie進(jìn)程。
===========================================


任何程序都有僵尸狀態(tài),它占用一點(diǎn)內(nèi)存資源(也就是進(jìn)程表里還有一個(gè)記錄),僅僅是表象而已不必害怕。如果程序有問(wèn)題有機(jī)會(huì)遇見(jiàn),解決大批量僵尸簡(jiǎn)單有效的辦法是重起。kill是無(wú)任何效果的


fork與zombie/defunct"

在Unix 下的一些進(jìn)程的運(yùn)作方式。當(dāng)一個(gè)進(jìn)程死亡時(shí),它并不是完全的消失了。進(jìn)程終止,它不再運(yùn)行,但是還有一些殘留的小東西等待父進(jìn)程收回。這些殘留的東西包括 子進(jìn)程的返回值和其他的一些東西。當(dāng)父進(jìn)程 fork() 一個(gè)子進(jìn)程后,它必須用 wait() 或者 waitpid() 等待子進(jìn)程退出。正是這個(gè) wait() 動(dòng)作來(lái)讓子進(jìn)程的殘留物消失。

自然的,在上述規(guī)則之外有個(gè)例外:父進(jìn)程可以忽略 SIGCLD 軟中斷而不必要 wait()。可以這樣做到(在支持它的系統(tǒng)上,比如Linux):

main()
{
signal(SIGCLD, SIG_IGN); /* now I don't have to wait()! */
.
.
fork();
fork();
fork(); /* Rabbits, rabbits, rabbits! */



現(xiàn)在,子進(jìn)程死亡時(shí)父進(jìn)程沒(méi)有 wait(),通常用 ps 可以看到它被顯示為“”。它將永遠(yuǎn)保持這樣 直到 父進(jìn)程 wait(),或者按以下方法處理。

這 里是你必須知道的另一個(gè)規(guī)則:當(dāng)父進(jìn)程在它wait()子進(jìn)程之前死亡了(假定它沒(méi)有忽略 SIGCLD),子進(jìn)程將把 init(pid 1)進(jìn)程作為它的父進(jìn)程。如果子進(jìn)程工作得很好并能夠控制,這并不是問(wèn)題。但如果子進(jìn)程已經(jīng)是 defunct,我們就有了一點(diǎn)小麻煩。看,原先的父進(jìn)程不可能再 wait(),因?yàn)樗呀?jīng)消亡了。這樣,init 怎么知道 wait() 這些 zombie 進(jìn)程。

答案:不可預(yù)料的。在一些系統(tǒng)上,init周期性的破壞掉它所有的defunct進(jìn)程。在另外一些系統(tǒng)中,它干 脆拒絕成為任何defunct進(jìn)程的父進(jìn)程,而是馬上毀滅它們。如果你使用上述系統(tǒng)的一種,可以寫(xiě)一個(gè)簡(jiǎn)單的循環(huán),用屬于init的defunct進(jìn)程填 滿(mǎn)進(jìn)程表。這大概不會(huì)令你的系統(tǒng)管理員很高興吧?

你的任務(wù):確定你的父進(jìn)程不要忽略 SIGCLD,也不要 wait() 它 fork() 的所有進(jìn)程。不過(guò),你也未必 要 總是這樣做(比如,你要起一個(gè) daemon 或是別的什么東西),但是你必須小心編程,如果你是一個(gè) fork() 的新手。另外,也不要在心理上有任何束縛。

總結(jié):
子進(jìn)程成為 defunct 直到父進(jìn)程 wait(),除非父進(jìn)程忽略了 SIGCLD 。
更進(jìn)一步,父進(jìn)程沒(méi)有 wait() 就消亡(仍假設(shè)父進(jìn)程沒(méi)有忽略 SIGCLD )的子進(jìn)程(活動(dòng)的或者 defunct)成為 init 的子進(jìn)程,init 用重手法處理它們。

?

==================================

?

posted on 2007-08-01 00:05 旅途 閱讀(1439) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): Linux開(kāi)發(fā)

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产精品高潮呻吟久久av无限| 久久伊人免费视频| 亚洲欧美日韩一区二区三区在线观看| 欧美精品粉嫩高潮一区二区 | 欧美专区在线观看| 欧美一区1区三区3区公司| 免费在线欧美黄色| 欧美mv日韩mv亚洲| 亚洲欧美资源在线| 久久久久一区| 欧美一区1区三区3区公司| 欧美在线不卡| 亚洲手机视频| 日韩一级成人av| 午夜亚洲激情| 亚洲午夜视频在线| 久久久久.com| 午夜精品理论片| 免费亚洲一区二区| 欧美sm重口味系列视频在线观看| 欧美制服丝袜| 亚洲精品在线一区二区| 欧美激情成人在线| 亚洲一区二区免费看| 亚洲视频电影在线| 欧美在线免费观看视频| 亚洲大胆女人| 亚洲永久免费av| 欧美一区二区视频在线| 一本色道久久综合亚洲精品不卡| 亚洲影院高清在线| 亚洲电影毛片| 亚洲国产精品t66y| 欧美在线视频一区二区| 欧美一区二区三区在线播放| 欧美精品一级| 国产欧美日韩精品丝袜高跟鞋| 免费在线欧美黄色| 国产在线不卡| 亚洲欧洲一区二区天堂久久| 性欧美在线看片a免费观看| 日韩午夜在线| 亚洲国产清纯| 久久久精品视频成人| 久久黄色级2电影| 99精品欧美一区二区三区综合在线| aa级大片欧美三级| 亚洲一区国产视频| 欧美午夜国产| 经典三级久久| 久久久亚洲高清| 免费观看国产成人| 亚洲免费观看高清在线观看| 午夜精品偷拍| 欧美成人69av| 亚洲国产欧美一区二区三区久久 | 亚洲激情欧美| 欧美在线播放一区| 亚洲深夜福利网站| 久久人人看视频| 一区二区三区在线视频观看| 亚洲精品影视在线观看| 欧美大片在线看| 国产欧美一区二区视频| 欧美视频一区二区三区…| 亚洲黄一区二区| 亚洲欧美激情视频在线观看一区二区三区| 亚洲精品中文字幕女同| 久久精品99国产精品| 精品电影一区| 亚洲午夜电影在线观看| 亚洲一区图片| 亚洲小说春色综合另类电影| 久久亚洲综合网| 精品成人一区二区三区| 亚洲综合色视频| 在线综合亚洲欧美在线视频| 亚洲欧美日韩国产综合在线| 欧美sm视频| 亚洲一区日韩在线| 欧美激情一区二区三区在线视频| 免费日韩一区二区| 国产精品久久久久久久久借妻 | 欧美激情2020午夜免费观看| 欧美jizzhd精品欧美巨大免费| 亚洲国产黄色| 久久久水蜜桃| 男女精品网站| 国产日韩精品综合网站| 欧美成人a∨高清免费观看| 欧美一级精品大片| 亚洲东热激情| 亚洲欧美日韩一区二区| 久久久精品五月天| 亚洲激情av在线| 久久精品99无色码中文字幕| 精品91在线| 亚洲最新合集| 免费成人网www| 亚洲免费影视第一页| 性久久久久久久久| 国产亚洲欧美色| 亚洲另类在线一区| 欧美日韩国产在线| 国产欧美日韩一区| 亚洲国产岛国毛片在线| 免费成人高清视频| 亚洲国产一区二区三区青草影视| 乱中年女人伦av一区二区| 欧美日韩一级大片网址| 中文亚洲字幕| 久久资源av| 亚洲精品一区二区在线观看| 在线亚洲精品| 国产精品一区久久久| 国产一二三精品| 嫩草影视亚洲| 欧美大片91| 久久日韩精品| 鲁大师成人一区二区三区 | 久久国产精彩视频| 久久久av水蜜桃| 国产伦精品一区二区三区视频孕妇 | 欧美大片专区| 亚洲国产精品一区二区久| 亚洲欧美一区二区在线观看| 国产一区二区精品| 亚洲视频网在线直播| 国产一区亚洲一区| 中文在线一区| 精品不卡在线| 久久国产精品久久久久久久久久 | 麻豆久久精品| 久久夜色精品亚洲噜噜国产mv| 久热精品视频在线观看| 久久视频在线视频| 欧美视频日韩视频| 日韩午夜激情电影| 一区二区视频欧美| 久久av一区二区三区| 日韩视频三区| 亚洲第一色中文字幕| 亚洲国产精品一区二区www| 国产精品99久久久久久久女警| 亚洲激情欧美| 亚洲香蕉网站| 尤物yw午夜国产精品视频| 久久福利视频导航| 国产美女一区二区| 欧美在线国产| 亚洲二区在线| 蜜臀va亚洲va欧美va天堂| 午夜精品区一区二区三| 国产精品系列在线播放| 91久久久亚洲精品| 免费成人av在线| 久久久久欧美| 欧美一区二区三区视频免费| 久久精品国产亚洲一区二区三区 | 亚洲第一级黄色片| 亚洲国产天堂久久综合| 亚洲欧美一区二区精品久久久| 亚洲国产成人久久综合一区| 免费日韩av| 欧美激情一区二区三区全黄| 一区二区三区久久| 欧美www在线| 9久草视频在线视频精品| 日韩网站在线观看| 欧美国产精品中文字幕| 欧美插天视频在线播放| 精品999网站| 久久精品在线观看| 久久久国产亚洲精品| 国内精品视频666| 欧美在线91| 久久久久久久一区| 久久精品人人爽| 亚洲人在线视频| 国产精品一区视频| 欧美成人免费在线视频| 国产精品99久久久久久www| 欧美jjzz| 欧美一区二区成人| 久久久九九九九| 亚洲综合视频网| 国产精品综合| 欧美黄色大片网站| 亚洲精选中文字幕| 久久中文字幕一区| 在线看片第一页欧美| 国产精品日韩一区二区| 亚洲欧美日韩成人| 亚洲精品五月天| 亚洲一级高清| 国产色综合久久| 免费亚洲电影| 亚洲另类自拍| 久久久久久久97| 99精品国产福利在线观看免费|