それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

子孫プロセスも含めて殺す。Kill children and ancestors

プロセスの子孫を消したいなーって

絶対、車輪の再発明になるので検索させていただきました。

再帰で殺す

kill コマンドとppid をきっちり使いこなせば、ちゃんと理解できるんだろうけど、それを説明するのはかったるいので、再帰呼出しがイメージしやすいのではなかろうか。

killtree.sh
#!/usr/bin/env bash


killtree() {
    local parent=$1 child
    for child in $(ps -o ppid= -o pid= | awk "\$1==$parent {print \$2}"); do
        killtree $child
    done
    kill $parent
}


killtree $@

参考資料

https://stackoverflow.com/questions/392022/best-way-to-kill-all-child-processes