精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

僵尸進(jìn)程的產(chǎn)生介紹和危害以及解決方法

5RJg_mcuworld ? 2017-12-18 15:56 ? 次閱讀

如果你經(jīng)常使用 Linux,你應(yīng)該遇到這個(gè)術(shù)語“僵尸進(jìn)程Zombie Processes”。 那么什么是僵尸進(jìn)程? 它們是怎么產(chǎn)生的? 它們是否對(duì)系統(tǒng)有害? 我要怎樣殺掉這些進(jìn)程? 下面將會(huì)回答這些問題。

什么是僵尸進(jìn)程?

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

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

僵尸進(jìn)程介紹和危害以及解決方法

但是,有時(shí)候有些程序即使執(zhí)行完了也依然留在進(jìn)程表中。

那么,這些完成了生命周期但卻依然留在進(jìn)程表中的進(jìn)程,我們稱之為 “僵尸進(jìn)程”。

它們是如何產(chǎn)生的?

當(dāng)你運(yùn)行一個(gè)程序時(shí),它會(huì)產(chǎn)生一個(gè)父進(jìn)程以及很多子進(jìn)程。 所有這些子進(jìn)程都會(huì)消耗內(nèi)核分配給它們的內(nèi)存和 CPU 資源。

這些子進(jìn)程完成執(zhí)行后會(huì)發(fā)送一個(gè) Exit 信號(hào)然后死掉。這個(gè) Exit 信號(hào)需要被父進(jìn)程所讀取。父進(jìn)程需要隨后調(diào)用wait命令來讀取子進(jìn)程的退出狀態(tài),并將子進(jìn)程從進(jìn)程表中移除。

若父進(jìn)程正確第讀取了子進(jìn)程的 Exit 信號(hào),則子進(jìn)程會(huì)從進(jìn)程表中刪掉。

但若父進(jìn)程未能讀取到子進(jìn)程的 Exit 信號(hào),則這個(gè)子進(jìn)程雖然完成執(zhí)行處于死亡的狀態(tài),但也不會(huì)從進(jìn)程表中刪掉。

僵尸進(jìn)程對(duì)系統(tǒng)有害嗎?

不會(huì)。由于僵尸進(jìn)程并不做任何事情, 不會(huì)使用任何資源也不會(huì)影響其它進(jìn)程, 因此存在僵尸進(jìn)程也沒什么壞處。 不過由于進(jìn)程表中的退出狀態(tài)以及其它一些進(jìn)程信息也是存儲(chǔ)在內(nèi)存中的,因此存在太多僵尸進(jìn)程有時(shí)也會(huì)是一些問題。

你可以想象成這樣:

“你是一家建筑公司的老板。你每天根據(jù)工人們的工作量來支付工資。 有一個(gè)工人每天來到施工現(xiàn)場,就坐在那里, 你不用付錢, 他也不做任何工作。 他只是每天都來然后呆坐在那,僅此而已!”

這個(gè)工人就是僵尸進(jìn)程的一個(gè)活生生的例子。但是, 如果你有很多僵尸工人, 你的建設(shè)工地就會(huì)很擁堵從而讓那些正常的工人難以工作。

那么如何找出僵尸進(jìn)程呢?

打開終端并輸入下面命令:

psaux|grepZ

會(huì)列出進(jìn)程表中所有僵尸進(jìn)程的詳細(xì)內(nèi)容。

如何殺掉僵尸進(jìn)程?

正常情況下我們可以用 SIGKILL 信號(hào)來殺死進(jìn)程,但是僵尸進(jìn)程已經(jīng)死了, 你不能殺死已經(jīng)死掉的東西。 因此你需要輸入的命令應(yīng)該是

kill-sSIGCHLDpid

將這里的 pid 替換成父進(jìn)程的進(jìn)程 id,這樣父進(jìn)程就會(huì)刪除所有以及完成并死掉的子進(jìn)程了。

你可以把它想象成:

“你在道路中間發(fā)現(xiàn)一具尸體,于是你聯(lián)系了死者的家屬,隨后他們就會(huì)將尸體帶離道路了。”

不過許多程序?qū)懙牟皇悄敲春茫瑹o法刪掉這些子僵尸(否則你一開始也見不到這些僵尸了)。 因此確保刪除子僵尸的唯一方法就是殺掉它們的父進(jìn)程。


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11123

    瀏覽量

    207908

原文標(biāo)題:在Linux中,如何找到并殺掉僵尸進(jìn)程?

文章出處:【微信號(hào):mcuworld,微信公眾號(hào):嵌入式資訊精選】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    孤兒進(jìn)程僵尸進(jìn)程

    前段時(shí)間,由于研究經(jīng)典面試題,把孤兒進(jìn)程僵尸進(jìn)程也總結(jié)了一下。我們有這樣一個(gè)問題:孤兒進(jìn)程僵尸進(jìn)程
    發(fā)表于 11-29 14:08

    為什么會(huì)出現(xiàn)LINUX僵尸進(jìn)程

    僵尸進(jìn)程出現(xiàn)在父進(jìn)程沒有回收子進(jìn)程的PCB的時(shí)候,這個(gè)時(shí)候子進(jìn)程已經(jīng)結(jié)束,但是父進(jìn)程沒有回收他,
    發(fā)表于 08-07 06:48

    Labview中調(diào)用FFmpeg產(chǎn)生僵尸進(jìn)程的怎么處理?

    時(shí),根據(jù)下圖的原理,會(huì)停掉這個(gè)副本的循環(huán),但是此時(shí)產(chǎn)生的ffmpeg.exe進(jìn)程并沒有消失,如圖3,此時(shí)cpu占用為0,內(nèi)存占用70多m,請(qǐng)問有沒有方法來阻止這種進(jìn)程
    發(fā)表于 04-23 21:15

    進(jìn)程有幾種狀態(tài)?

    ?線程間同步方法有哪些?什么是內(nèi)核線程和用戶線程?內(nèi)核線程和用戶線程的區(qū)別?內(nèi)核線程和用戶線程有什么優(yōu)缺點(diǎn)?什么是僵尸進(jìn)程,孤兒進(jìn)程,守護(hù)進(jìn)程
    發(fā)表于 12-24 07:16

    短波通信盲區(qū)現(xiàn)象解決方法介紹

    短波通信盲區(qū)現(xiàn)象解決方法介紹短波通信盲區(qū)現(xiàn)象解決方法介紹短波通信盲區(qū)現(xiàn)象解決方法介紹
    發(fā)表于 11-10 17:13 ?5次下載

    產(chǎn)生虛焊的原因及解決方法介紹

    本文開始闡述了什么是虛焊以及虛焊的危害,其次介紹了虛焊產(chǎn)生的主要原因及分析虛焊的原因和步驟,最后介紹了解決虛焊的
    發(fā)表于 02-27 11:06 ?8.4w次閱讀

    SKYPOS刷卡機(jī)的各種故障以及解決方法

    本文檔介紹的主要內(nèi)容詳細(xì)介紹的是SKYPOS刷卡機(jī)的各種故障以及解決方法
    發(fā)表于 06-14 08:00 ?6次下載
    SKYPOS刷卡機(jī)的各種故障<b class='flag-5'>以及</b><b class='flag-5'>解決方法</b>

    什么是僵尸進(jìn)程_Linux僵尸進(jìn)程可以被“殺死”嗎?

    首先要明確一點(diǎn),僵尸進(jìn)程的含義是:子進(jìn)程已經(jīng)死了,但是父進(jìn)程還沒有wait它的一個(gè)中間狀態(tài),這個(gè)時(shí)候子進(jìn)程是一個(gè)
    的頭像 發(fā)表于 07-28 10:09 ?4599次閱讀
    什么是<b class='flag-5'>僵尸</b><b class='flag-5'>進(jìn)程</b>_Linux<b class='flag-5'>僵尸</b><b class='flag-5'>進(jìn)程</b>可以被“殺死”嗎?

    靜電放電ESD的介紹和原理及解決方法概述

    本文檔的主要內(nèi)容詳細(xì)介紹的是靜電放電ESD的介紹和原理及解決方法概述主要內(nèi)容包括了:一、何謂ESD ? 二、靜電的產(chǎn)生機(jī)理 ? 三、靜電的危害
    發(fā)表于 01-07 08:00 ?93次下載
    靜電放電ESD的<b class='flag-5'>介紹</b>和原理及<b class='flag-5'>解決方法</b>概述

    Linux 系統(tǒng)中僵尸進(jìn)程

    進(jìn)程為其收尸。僵尸進(jìn)程如何產(chǎn)生的?如果一個(gè)進(jìn)程在其終止的時(shí)候,自己就回收所有分配給它的資源,系統(tǒng)就不會(huì)產(chǎn)
    發(fā)表于 04-02 14:40 ?412次閱讀

    電弧產(chǎn)生的原因及危害

    本文首先介紹了電弧的組成,其次介紹了電弧的產(chǎn)生,最后介紹了電弧的危害及消除方法
    發(fā)表于 05-23 15:42 ?2.3w次閱讀

    Linux僵尸進(jìn)程會(huì)被殺死嗎?

    那么,根據(jù)POSIX標(biāo)準(zhǔn)關(guān)于信號(hào)(signal)的定義,當(dāng)我們執(zhí)行kill -9 4730(4730是4730和4731的TGID,也是整個(gè)進(jìn)程用戶態(tài)視角的PID)的時(shí)候,是要?dú)⑺勒麄€(gè)4730進(jìn)程的,所以這個(gè)時(shí)候4731被我們殺死,整個(gè)
    發(fā)表于 08-07 16:48 ?332次閱讀
    Linux<b class='flag-5'>僵尸</b><b class='flag-5'>進(jìn)程</b>會(huì)被殺死嗎?

    電網(wǎng)諧波產(chǎn)生的原因,危害以及抑制方法

      電網(wǎng)諧波主要是由發(fā)電設(shè)備(電氣終端)、輸配電設(shè)備和電力系統(tǒng)的非線性負(fù)載引起的。今天主要了解電網(wǎng)諧波產(chǎn)生的原因,危害以及抑制方法
    的頭像 發(fā)表于 01-10 13:13 ?1.2w次閱讀
    電網(wǎng)諧波<b class='flag-5'>產(chǎn)生</b>的原因,<b class='flag-5'>危害</b><b class='flag-5'>以及</b>抑制<b class='flag-5'>方法</b>

    linux下開發(fā)避免僵尸進(jìn)程方法

    進(jìn)程ID,退出狀態(tài),占用的資源等等),你可能會(huì)問,為什么這么麻煩,直接釋放完資源不就行了嗎?這是因?yàn)橛袝r(shí)它的父進(jìn)程想了解它的退出狀態(tài)。在子進(jìn)程退出但還未被其父進(jìn)程“收尸”之前,該子
    的頭像 發(fā)表于 11-11 16:38 ?610次閱讀
    linux下開發(fā)避免<b class='flag-5'>僵尸</b><b class='flag-5'>進(jìn)程</b>的<b class='flag-5'>方法</b>

    如何查看系統(tǒng)是否有僵尸進(jìn)程

    進(jìn)程中的指令已經(jīng)執(zhí)行完成,但是進(jìn)程PCB結(jié)構(gòu)還沒有回收。   即子進(jìn)程先于父進(jìn)程退出后,子進(jìn)程的PCB需要其父
    的頭像 發(fā)表于 11-29 15:52 ?5763次閱讀
    如何查看系統(tǒng)是否有<b class='flag-5'>僵尸</b><b class='flag-5'>進(jìn)程</b>