#!/bin/sh -e stop() { trap - HUP PIPE INT QUIT TERM EXIT echo | mailx -s "Stopping" "$NOTIFY_EMAIL" for probe in $probes ; do [ -s $probe/state/pid ] || continue echo killing ${probe} pkill -F $probe/state/pid 2>/dev/null || : done for probe in $probes ; do read pid < $probe/state/pid || : [ -n "$pid" ] || continue echo waiting ${probe} wait $pid || : done echo finished exit } root="`pwd`" SGMONDIR="$(dirname "$(realpath -- "$0")")" . "$SGMONDIR"/rc probes="$("$SGMONDIR"/probelist.sh)" echo $(echo "$probes" | wc -l) probes | mailx -s "Starting" "$NOTIFY_EMAIL" for probe in $probes ; do cd $probe echo -n starting ${probe} "$SGMONDIR"/run.sh $probe >/dev/null 2>&1 & pid=$! while : ; do if [ -d state ] ; then break else sleep 0.1 echo -n . fi done echo "" echo $pid > state/pid || : cd "$root" done echo OK trap stop HUP PIPE INT QUIT TERM EXIT while : ; do sleep 1 ; done