shell kill 进程树

Shell 脚本程序往往会创建很多进程,当出现问题或者想终止执行的时候很麻烦,有时候忘记kill子进程,会出现一些很诡异的情况(如子进程需要写文件)。写个脚本kill进程树,方便以后系统维护使用。

#!/bin/sh

if [ $# -ne 1 ]
then
    echo -e "\033[;36mUsage:\033[0m" "\033[;32mkillall\033[0m" "\033[;33mPID\033[0m"
    exit
else
    root=$1
fi

function treekill()
{
    local father=$1

    # children
    childs=(`ps -ef | awk -v father=$father 'BEGIN{ ORS=" "; } $3==father{ print $2; }'`)
    if [ ${#childs[@]} -ne 0 ]
    then
        for child in ${childs[*]}
        do
            treekill $child
        done
    fi

    # father 
    echo -e "\033[;32mkill\033[0m" "\033[;36mpid\033[0m" "\033[;33m$father\033[0m"
    kill -9 $father
}

treekill $root

测试一下:

test.sh 如下

#!/bin/sh

sh ./test1.sh &
sleep 55555555 &
sleep 7777777
test1.sh 如下

#!/bin/sh

sleep 55555555 &
sleep 7777777
运行

sh test.sh &
killtree pid # test.sh 的进程ID


  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值