孤児プロセスを kill

孤児プロセスを成仏させる。

昨日の投稿では、いっぱいプロセスを起動して、全部終了するまで待つという処理をやっていた。しかし、待っている間に親プロセスが死んだら、親から産まれた子は孤児となってしまう。

孤児プロセスを親の元へ逝かせるには、監視させたい親プロセスから以下のスクリプトをバックグラウンドで実行させる。

$PPID には親プロセスの ID が入っているので、ps -p でそのプロセスがなくなっていないか、定期的にチェックする。親から実行された子プロセスのプロセスグループ ID は、親プロセスの ID となっているので、親プロセスの ID をグループプロセス ID として指定して、問答無用で kill している。本当は watcher.sh 以外のプロセス ID を拾ってきて kill したいところ。