小编Oli*_*aum的帖子

如何运行多个进程并在其中任何一个退出或失败时退出

我正在运行多个进程,如果其中任何一个进程失败或存在,我想使用适当的退出代码退出(这意味着失败时出错,否则成功)。

此外,如果任何子进程退出或失败,任何其他子进程也应关闭。

我当前的非功能性解决方案(纱线只是一个例子;可能是任何其他命令):

#!/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
Run Code Online (Sandbox Code Playgroud)

./bin/schedule.sh:

#!/bin/bash -e

while true; do
  yarn schedule
  sleep 30
done
Run Code Online (Sandbox Code Playgroud)

如果某些内容yarn schedule失败,则一切都正确存在。但是当我通过ctrl+c或yarn taskexitsyarn schedule终止进程时,它会继续运行。

无论子进程是什么(bash、yarn、php 或其他),如何让它工作?

我不能使用 GNU 并行。

shell bash concurrency exit-status

5
推荐指数
1
解决办法
1814
查看次数

标签 统计

bash ×1

concurrency ×1

exit-status ×1

shell ×1