Linuxでプロセスツリーを丸ごとkillする

  • このフォーラムに新しいトピックを立てることはできません
  • このフォーラムではゲスト投稿が禁止されています

投稿ツリー


前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2016/1/7 11:51 | 最終変更
kawa  長老   投稿数: 232
子シェルを起動しているようなシェルをkillすると子シェルがゾンビ化してプロセスは生き続けてしまいます。

対象シェルの子まで削除するには再帰的に子から殺してくる必要がある。

そのためのシェル。コピペどうぞ。

実行方法
killtree.sh -<proc_id> -<signal>
<signal>省略時は15を送信する。

<<killtree.sh>>

#!/bin/bash

killtree() {
    local _pid=$1
    local _sig=${2:-15}
    kill -stop ${_pid} 

    for _child in $(ps -o pid --no-headers --ppid ${_pid}); do
        killtree ${_child} ${_sig}
    done
    kill -${_sig} ${_pid}
}

if [ $# -eq 0 -o $# -gt 2 ]; then
    echo "Usage: $(basename $0) <pid> [signal]"
    exit 1
fi

killtree $@

投票数:0 平均点:0.00
  条件検索へ

メインメニュー

ログイン

ユーザー名:


パスワード:





パスワード紛失