#!/bin/bash

# lancia in parallelo tutti gli script in una directory. Aspetta minimo 1 secondo, massimo 5 secondi per ogni script
# poi va comunque avanti anche se lo script non e' ancora terminato
# Non lancia uno script se e' gia' in esecuzione
# Usage: run_parts_concurently /path/to/dir

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
SERVICE_DIR=$1
cd $SERVICE_DIR


function wait_pid_with_tout()
{
    PID=$1
    TOUT=$2
    SECS=0
    while kill -0 $PID >/dev/null 2>&1
    do
        sleep 1
        SECS=$((SECS+1))
        if [ $SECS -ge $TOUT ]
        then
            return 1
        fi
    done
    return 0
}

for service in *
do
    if  ps auxw | grep -v grep | grep -q $SERVICE_DIR/$service
    then
        echo "SKIPPING $service, it's already running"
    else
        echo "Starting $service"
        $SERVICE_DIR/$service &
        PID=$!
        wait_pid_with_tout $PID 5
    fi
done
exit 0