Proceso secuencial

Me tope con un problema en el cual debía ejecutar un proceso en varias partes y ejecutarlo nuevamente si es que había finalizado antes de terminar la tarea que necesitaba terminar, por suerte con un poco de ayuda de germán armé este pequeño script salvaje que resuelve el problema:

#!/usr/bin/bash
COMMAND="process name";
    
$COMMAND &
PID=$!
FINISH=0

echo 0 > process_finished
while true
do
    if ! ps -p $PID >/dev/null;
    then
    FINISH=`cat process_finished`;
    if [ $FINISH -eq 1 ]
    then
        echo "batch finished running";
        break;
    else
        echo "running again";       
        $COMMAND &
        PID=$!
    fi
    fi
    sleep 1;
done

Básicamente el comando se ejecuta nuevamente si no esta siendo ejecutado a menos que se encuentre 1 en el archivo process_finished .

Quizás no es una solución elegante pero muy util y eficaz para resolver un problema puntual.

  • LinkedIn
  • Tumblr
  • Reddit
  • Google+
  • Pinterest
  • Pocket