杀死进程树

function getchld_kill()
{
        if [[ -z "$1" ]];
        then
                echo "arguemnt 1 should be a number";
                exit;
        fi
        local child
        local father=$1
#        echo  "father: ${father}"
        local childs=$(ps -ef | awk -v father=$father 'BEGIN{ ORS=" "; } $3==father{ print $2; }')
#        echo "childs: " ${childs[*]}
        if [[ ${#childs[@]} -ne 0 && -n "${childs[0]}" ]];
        then
                for child in ${childs[@]}
                do
#                       echo child:${child}
                        getchld_kill ${child}
                done
                echo "killing the father: ${father}"
                kill -9 ${father}
        else
                echo "killing myself pid:${father}"
                kill -9 ${father}
                return
        fi
}

getchld_kill $1

使用递归调用实现了树的深度优先遍历:
递归条件是 childs 数组不空, 且第一个元素非空( awk 在叶子上返回一个第一个元素是空的数组)
base line condition 设置在叶子进程上进行递归返回.
getchld_kill 的参数是树根进程.

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 过了腊月23,过年的节奏就快了,家家户户天天都在为迎新年做准备。 二十三,糖瓜粘; 二十四,扫房...
    万紫千红h阅读 1,950评论 0 3
  • Part 1.初遇 —— 七月,太阳很是灼人。 知了聒噪的在树上叫着,教室里响着学生们翻动书本,和笔尖划过纸张沙沙...
    苏阿聿阅读 3,385评论 0 2
  • 2017年12月8号 星期五 晴 晚上大宝的美术学校给农历十月过生日的孩子统一过生日。晚...
    星曦宝贝阅读 1,586评论 0 0
  • 近来,有一个游戏软件风靡我们大中国,叫《旅行青蛙》。 我当然也就赶紧顺应潮流的找资源,给我的手机也安装了一个了! ...
    泡面卷儿阅读 3,677评论 4 2
  • 亲爱的婆婆,今天早上我起来,阳光明媚,不过还是蛮冷的。我看见你一大早起来洗衣服,我对你说你怎么这么早就要洗衣服,你...
    冬季飘雪阅读 1,157评论 0 1