sangue/docker/test_and_build/startstop_utils.sh

45 lines
962 B
Bash

#! /bin/bash --
killa() {
if [[ "$1" != 'none' ]]; then
if [[ "$2" == "" ]]; then
SIGNAL=15
else
SIGNAL="$2"
fi
case "$SIGNAL" in
15)
echo >&2 "stopping $1..."
;;
9)
echo >&2 "killing $1..."
;;
*)
echo >&2 "sending signal $SIGNAL to $1..."
;;
esac
kill -"$SIGNAL" "$1" 2>/dev/null
fi
}
stop() {
PID_DA_WAITARE=()
for pid in "$@"; do
if [[ "$pid" != 'none' ]]; then
PID_DA_WAITARE+=("$pid")
killa "$pid"
fi
done
{
if sleep 5; then
for pid in "$@"; do
killa "$pid" 9
done
wait
fi
}&
SLEEP_PID=$!
wait "${PID_DA_WAITARE[@]}" #aspetto solo i pid nei parametri, non sleep...&
# se questo kill fallisce vuol dire che il ciclo con sleep 5 è terminato -> è servito killare qualche processo
kill "$SLEEP_PID" 2>/dev/null && echo >&2 "Tutti i processi terminati normalmente"
exit 0
}