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

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

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

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

要長(zhǎng)高 ? 來(lái)源:eetop ? 作者:wangjicheng886 ? 2023-11-29 15:52 ? 次閱讀

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

使用Top命令查找,當(dāng)zombie前的數(shù)量不為0時(shí),即系統(tǒng)內(nèi)存在相應(yīng)數(shù)量的僵尸進(jìn)程。

wKgaomVm7UeAWCgqAASy3vXx9DY652.png

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

審核編輯:黃飛

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

    關(guān)注

    87

    文章

    11329

    瀏覽量

    209976
  • 進(jìn)程
    +關(guān)注

    關(guān)注

    0

    文章

    204

    瀏覽量

    13971
  • PCB
    PCB
    +關(guān)注

    關(guān)注

    1

    文章

    1817

    瀏覽量

    13204
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Linux 查看進(jìn)程和刪除進(jìn)程

    ps 命令用于查看當(dāng)前正在運(yùn)行的進(jìn)程。grep 是搜索例如: ps -ef | grep java表示查看所有進(jìn)程里 CMD 是 java 的進(jìn)程
    發(fā)表于 04-24 00:04

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

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

    什么是僵尸進(jìn)程和孤兒進(jìn)程

    在UNIX里,除了進(jìn)程0(即PID=0的交換進(jìn)程,Swapper Process)以外的所有進(jìn)程都是由其他進(jìn)程使用系統(tǒng)調(diào)用fork創(chuàng)建的,這
    發(fā)表于 08-02 08:36

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

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

    linux系統(tǒng)進(jìn)程怎么查看與控制

    linux系統(tǒng)進(jìn)程查看與控制
    發(fā)表于 05-28 11:02

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

    文章目錄操作系統(tǒng)進(jìn)程和線程什么是進(jìn)程?什么是線程?進(jìn)程和線程什么區(qū)別?何時(shí)使用多進(jìn)程,何時(shí)使用
    發(fā)表于 12-24 07:16

    哪些進(jìn)程會(huì)占用我們過(guò)多的內(nèi)存和CPU信息呢?如何查看

    顯示當(dāng)前系統(tǒng)進(jìn)程狀態(tài)。使用該命令可以確定有哪些進(jìn)程正在運(yùn)行和運(yùn)行的狀態(tài)、進(jìn)程是否結(jié)束、有沒(méi)有僵尸
    發(fā)表于 06-20 18:12

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

    如果你經(jīng)常使用 Linux,你應(yīng)該遇到這個(gè)術(shù)語(yǔ)“僵尸進(jìn)程Zombie Processes”。 那么什么是僵尸進(jìn)程? 它們是怎么產(chǎn)生的? 它們是否
    的頭像 發(fā)表于 12-18 15:56 ?5798次閱讀
    <b class='flag-5'>僵尸</b><b class='flag-5'>進(jìn)程</b>的產(chǎn)生介紹和危害以及解決方法

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

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

    你知道僵尸進(jìn)程是個(gè)什么東西?

    在UNIX系統(tǒng)中,僵尸進(jìn)程是指完成執(zhí)行(通過(guò)exit系統(tǒng)調(diào)用,或運(yùn)行時(shí)發(fā)生致命錯(cuò)誤或收到終止信號(hào)所致)但在操作系統(tǒng)
    發(fā)表于 04-22 17:50 ?1257次閱讀

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

    不合理,父進(jìn)程從不調(diào)用 wait 等系統(tǒng)調(diào)用來(lái)收集僵尸進(jìn)程,那么這些進(jìn)程會(huì)一直存在內(nèi)存中。在 Linux 下,我們可以使用 ps 等命令
    發(fā)表于 04-02 14:40 ?453次閱讀

    使用Linux命令lsof查看進(jìn)程打開和查看文件的說(shuō)明

    linux命令 — lsof 查看進(jìn)程打開那些文件 或者 查看文件給那個(gè)進(jìn)程使用對(duì)調(diào)試文件很好的幫助和精準(zhǔn)定位問(wèn)題
    發(fā)表于 10-28 08:00 ?0次下載

    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 ?387次閱讀
    Linux<b class='flag-5'>僵尸</b><b class='flag-5'>進(jìn)程</b>會(huì)被殺死嗎?

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

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

    linux查看weblogic進(jìn)程

    在Linux操作系統(tǒng)中,WebLogic是一種常用的Java應(yīng)用服務(wù)器,用于部署和管理企業(yè)級(jí)Java應(yīng)用程序。為了確保WebLogic服務(wù)器正常運(yùn)行,有時(shí)我們需要查看WebLogic進(jìn)程以了解其狀態(tài)
    的頭像 發(fā)表于 12-05 16:07 ?1966次閱讀