I am running multiple processes and want to exit with the appropriate exit code (this means error on failure, success otherwise) if any of them fails or exists.
Additionally if any child process exits or fails, any other child processes should also be shut down.
My current non-functional solution (yarn is just an example; may be any other command):
#!/bin/bash -e
# Run other process before start
sh ./bin/optimize.sh
trap 'exit' INT TERM
trap 'kill -INT 0' EXIT
# Run Schedule
sh ./bin/schedule.sh &
# Run a long running task
yarn task &
wait
./bin/schedule.sh:
#!/bin/bash -e
while true; do
yarn schedule
sleep 30
done
If something in yarn schedule fails, everything exists correctly. But when I kill the process via ctrl+c or yarn task exits yarn schedule keeps running.
How to get this working regardless of what the child processes are (bash, yarn, php or whatever)?
I can't use GNU parallel.