プロセスの子孫を消したいなーって
絶対、車輪の再発明になるので検索させていただきました。
再帰で殺す
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