やりたいことは
自分以外の child process を再帰的に全て kill したいです。
たとえば、以下のような状況だとして、 PID=6295
以外のプロセスを kill したいです。
$ ps axo pid,ppid,pgid,command
PID PPID PGID COMMAND
6295 0 6285 resque-1.27.4: Forked 7053 at 1518352711
7053 6295 6285 resque-1.27.4: Processing open since 1518352711 [OpenWorker]
7068 7053 6285 sh .bananaci/deployment.sh 30 1234567
7258 7068 6285 sleep 5
こうじゃない
たとえば、同一の PGID を 全て kill してよいなら 下のコマンドで済みます。
$ kill -9 -6285
うまい方法がわからないので無理やりやります
PID=6295
を知っている状態で、このプロセスと同じ PGID=6285
なプロセスを kill します。
PID=6295
PGID=`ps o pgid= $PID`
ps axo pid,pgid | grep $PGID | grep -v $PID | awk '{print $1}' | xargs kill -9
以上です 🍏
他に良い方法があれば、教えていただきたいです...。