Supongamos que tenemos dos scripts de shell ejecutándose en paralelo
conductor.sh:
./proc1.sh&
./proc2.sh&
¿Cómo puedo finalizar un proceso si el otro salió con un código distinto de cero? (terminar driver.sh)
Respuesta1
Usando GNU Parallel se ve así:
parallel --halt now,fail=1 ::: script1.sh script2.sh
Respuesta2
A menos que tenga alguna lógica dentro del proceso de marchitamiento para controlar al otro ante algún cambio de estado, necesita rastrearlos/controlarlos usando PID:
#!/bin/bash
./proc1.sh &
pid_1=$! ## PID of proc1.sh
./proc2.sh &
pid_2=$! ## PID of proc2.sh
while ps -p ${pid_1} &>/dev/null; do :; done ##Checking for existence of proc1.sh
kill ${pid_2} ## Killing proc2.sh when proc1.sh is not running anymore