首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当第一个子进程停止时,如何退出主脚本?

问当第一个子进程停止时,如何退出主脚本?
EN

Stack Overflow用户
提问于 2017-10-30 03:46:59
回答 1查看 50关注 0票数 1

后台运行的进程有三个(proc1 1~3.sh)。当其中一个程序退出错误时,我想退出/停止所有这些程序。以下是我的简单方法,但仍然存在以下问题:

  1. 当一个程序退出错误时,它无法停止其他后台程序。
  2. 当第一个后台处理退出错误时,它无法停止。

示例脚本是:

代码语言:javascript
复制
#!/bin/bash
set -e
proc1.sh &
pid1=$!
proc2.sh &
pid2=$!
proc3.sh &
pid3=$!

if ! wait $pid1 ; then
  echo "Err: proc1 stopped"
  exit 1
fi

if ! wait $pid2 ; then
  echo "Err: proc2 stopped"
  exit 1
fi

if ! wait $pid3 ; then
  echo "Err: proc3 stopped"
  exit 1
fi
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-30 04:21:17

一个解决方案是使用GNU parallel

代码语言:javascript
复制
parallel -j3 --halt 2 bash ::: proc[1-3].sh
  • -j3并行运行3个作业
  • 当第一个作业失败并杀死剩余的正在运行的作业时,--halt 2将退出
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47007876

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档