聚合国内IT技术精华文章,分享IT技术精华,帮助IT从业人士成长

杀死指定进程的进程树

2014-08-30 03:15 浏览: 2340655 次 我要评论(0 条) 字号:

#!/usr/bin/env bash

killtree() {
    local _pid=$1
    local _sig=${2:--TERM}
    local _regex="[ ]*([0-9]+)[ ]+${_pid}"
    kill -stop ${_pid}
    for _child in $(ps ax -o "pid= ppid=" | grep -E "${_regex}" | sed -E "s/${_regex}/1/g"); do
        echo ${_child}
        killtree ${_child} ${_sig}
    done
    kill ${_sig} ${_pid}
}

if [ $# -eq 0 -o $# -gt 2 ]; then
    echo "Usage: $(basename $0) <pid> [signal]"
    exit 1
fi

(以上代码在macos下运行通过,linux下可能需要将sed的E参数改为r)



网友评论已有0条评论, 我也要评论

发表评论

*

* (保密)

Ctrl+Enter 快捷回复