揮発性のメモ2

最近知った知識を さも昔から知ってた風にメモ書きしていく

Linuxで、プロセスグループを殺す

プロセスを殺しても親や子や孫は死なないので、プロセスグループの指定で一族郎党皆殺しにする

プロセス名からプロセス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