プロセスを殺しても親や子や孫は死なないので、プロセスグループの指定で一族郎党皆殺しにする
プロセス名からプロセスIDを調べる
普通にpgrep を使う。 -n で最新1件、-o で最古1件になる
# pgrep -n -f "hoge.sh" 1235
プロセスIDからプロセスグループIDを調べる
psコマンドでオプションでpgidを指定する
# ps -o pgid= -p 1235 1233
プロセスグループIDを指定してシグナルを送信する
killコマンドで PIDにマイナスをつけるとプロセスグループ指定という意味になる
ただそのままだとオプションに見えるので、-- でオプション終わりと指定
# kill -TERM -- -1233
一連の流れを関数にすると
minagoroshi () { NAMAE="$1" KODOMO=$(pgrep -n -f "$NAMAE") [ -z "$KODOMO" ] && return KAZOKU=$(ps -o pgid= -p "$KODOMO" | tr -d ' ') [ -z "$KAZOKU" ] && return kill -TERM -- -"$KAZOKU" } # hoge.sh を含むプロセスグループを皆殺しにする minagoroshi hoge.sh