#!/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条评论, 我也要评论