佳木斯湛栽影视文化发展公司

主頁(yè) > 知識(shí)庫(kù) > Shell腳本實(shí)現(xiàn)查殺子進(jìn)程、僵尸進(jìn)程

Shell腳本實(shí)現(xiàn)查殺子進(jìn)程、僵尸進(jìn)程

熱門標(biāo)簽:服務(wù)外包 地方門戶網(wǎng)站 鐵路電話系統(tǒng) Linux服務(wù)器 網(wǎng)站排名優(yōu)化 AI電銷 百度競(jìng)價(jià)排名 呼叫中心市場(chǎng)需求

核心服務(wù)器上跑了一堆的腳本、程序,難免有時(shí)候會(huì)出現(xiàn)僵尸進(jìn)程,死不死活不活的在那里占用資源,最初只是寫了個(gè)根據(jù)關(guān)鍵字查殺進(jìn)程的linux shell腳本,后來(lái)發(fā)現(xiàn)很多時(shí)候進(jìn)程死在那里的時(shí)候其實(shí)是內(nèi)部調(diào)用子進(jìn)程的時(shí)候出現(xiàn)了問(wèn)題,這時(shí)候光殺父進(jìn)程根本沒解決根本問(wèn)題。比如說(shuō)rsync的時(shí)候通過(guò)ssh來(lái)連接,rsync本身沒問(wèn)題,但可能ssh死掉了。因此重新寫了腳本,遞歸查找子進(jìn)程。

復(fù)制代碼 代碼如下:

#!/bin/sh
# 遞歸找到導(dǎo)致進(jìn)程僵死的最底層子進(jìn)程并殺除.
ParentProcessID=$1;
if [ "x${ParentProcessID}" = "x" ] ; then
    echo "Please Supply the top Parent Process ID to be killed!"
    echo "Usage:sh $0 PID [-v]"
    echo "PID The Parent Process ID as root"
    echo "-v is this argument supplied,no real kill operation will be performed,only process tree be show."
    exit 1
fi

let IsRealKillDo=1;
if [ "x$2" = "x-v" ] ; then
    let IsRealKillDo=0;
fi

echo "Begin Kill the Leaf Process of process ${ParentProcessID}" >2

killpidList=""

function loopNextSubProcess(){
    local nParentProcessID=$1
    local tmpPidList=""
    tmpPidList=`ps -A --format='%p%PisParent' --width 2048 -w --sort pid|grep "${nParentProcessID}isParent"|grep -v grep|grep -v "$$" | awk '{ printf $1 }'`
    ps --format='%p%P%a' --width 2048 -w -p ${nParentProcessID}|grep -v grep|grep -v "$$" >2
    if [ "x${tmpPidList}" = "x" ] ; then
        echo "****Got One Leaf = [${nParentProcessID}]****" >2
        killpidList="${killpidList}\n${nParentProcessID}"
        return
    fi

    for theNextPid in ${tmpPidList} ; do
        loopNextSubProcess ${theNextPid}
    done
}

loopNextSubProcess ${ParentProcessID}

if [ ${IsRealKillDo} -eq 1 -a "x${killpidList}" != "x" ] ; then
    for curpid in `echo -e ${killpidList}` ; do
        if [ "x${curpid}" != "x" ] ; then
            echo "kill -9 ${curpid}"
            kill -9 ${curpid}
        fi
    done
else
    echo -e ${killpidList}
fi

標(biāo)簽:銅川 黃山 湘潭 湖南 蘭州 衡水 崇左 仙桃

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Shell腳本實(shí)現(xiàn)查殺子進(jìn)程、僵尸進(jìn)程》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    阿瓦提县| 江口县| 桐柏县| 南阳市| 三明市| 宾阳县| 蕲春县| 浮山县| 乃东县| 丰顺县| 龙井市| 双流县| 葵青区| 林甸县| 义乌市| 璧山县| 正安县| 中卫市| 西安市| 鄂伦春自治旗| 北流市| 临泉县| 章丘市| 江源县| 前郭尔| 拉孜县| 蒙山县| 根河市| 尼玛县| 南雄市| 延吉市| 临沧市| 商河县| 辽宁省| 武定县| 行唐县| 湖北省| 渭源县| 白银市| 雷山县| 铜川市|