#!/bin/bash #_term() { # echo "$0 caught SIGTERM signal!" # trap - SIGTERM # kill -TERM $child $$ #} launch_job() { PARENT=$1 shift "$@" & CHILD=$! trap "trap - SIGTERM; kill -TERM $CHILD $$" SIGTERM while sleep 1; do if [ ! -e /proc/$PARENT ]; then echo "Parent PID $PARENT disappears, terminating child $CHILD" kill -TERM $CHILD exit fi if [ ! -e /proc/$CHILD ]; then wait $CHILD trap - SIGTERM exit $? fi done } #trap _term SIGTERM #launch_job $$ "$@" & #echo "$0 Waiting for $! to finish" #wait $! launch_job $PPID "$@"