0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Linux のshellで子プロセスをすべて `kill` するには

0
Posted at

Linux のshellであるプロセス(親プロセス)に属する子プロセスをすべて kill するには

AIに書いてもらいました

親プロセスの PID を PPID として持つ子プロセスを全て終了させる

つまり「直系子」だけを対象にするか、孫・曾孫まで 再帰的に殺したいかで手順が変わります。


1. 直系子だけを一括で kill したい場合

pkill を使う(最も簡潔)


# 例: 親プロセスの PID が 1234 の子プロセスを全て SIGTERM で終了

pkill -TERM -P 1234

  • -P <pid>指定した PID の子プロセス を対象にします。

  • -TERM は送るシグナル。必要に応じて -KILL, -HUP 等に変えてください。

kill + pgrep で同じことを手動で


kill -TERM $(pgrep -P 1234)

  • pgrep -P 1234 が「PPID=1234 のプロセス ID をリストで返す」ので、

    その出力を kill に渡すことで一括終了します。


2. 子 → 孫 → その子まで 再帰的に全て kill したい場合

killpgrep をループで実行


kill_descendants() {

    local parent=$1

    # 子プロセスを取得

    local children=$(pgrep -P "$parent")

    for child in $children; do

        # まず子の子(孫)まで処理

        kill_descendants "$child"

        # 子プロセス自体を終了

        kill -TERM "$child"

    done

}

 

# 使い方

kill_descendants 1234   # 1234 の全ての子孫を SIGTERM で終了

kill + ps を使った一行式(ループ不要)


# ① まず全ての子プロセスを取得

CHILDREN=$(ps -o pid= -g "$(ps -o pgid= -p 1234 | tr -d ' ')")

# ② それらを kill

kill -TERM $CHILDREN

注意

  • この方法は 同一プロセスグループ(PGID)に属する全プロセスを対象にします。

親プロセスと子プロセスが必ずしも同じ PGID を持っているとは限らないので、

正確に「親から子孫まで」を捕捉したい場合は 再帰関数(上記 kill_descendants)を使うほうが安全です。


3. さらに安全に kill したい場合

シグナル 目的 使い方
SIGTERM(15) 通常終了要求 kill -TERM <pid>
SIGINT(2) Ctrl?C と同様 kill -INT <pid>
SIGKILL(9) 強制終了 kill -KILL <pid>
SIGSTOP 凍結 kill -STOP <pid>
  • まずは SIGTERM で試し、終了しないなら SIGKILL を付けてください。

  • killall / pkill でもシグナルを指定できます。例:pkill -KILL -P 1234


まとめ

目的 コマンド例
直系子を一括終了 pkill -TERM -P 1234
子プロセスを一括終了(kill+pgrep kill -TERM $(pgrep -P 1234)
子孫まで再帰的に終了 kill_descendants 1234(上記関数)
PGID 全体を終了 kill -TERM -<pgid>(PGID を取得して)

実際に使う前に必ず PID(親プロセス)を確認し、

必要に応じてシグナルを変えてテストしてください。

もし「親プロセス自体も終了させる」場合は、上記手順の最後に kill -TERM 1234 を追加してください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?