Linux 中运行的并行命令

Linux 中运行的并行命令

我使用以下 bash 脚本并行运行多个命令。它实际上会等待所有并行命令完成,然后继续。现在,我想改变这个 bash,让它只等待第一个“kill”,而这个 kill 来自哪个命令的执行并不重要。有什么建议吗?

for cmd in "$@"; do {
  echo "Process \"$cmd\" started";
  $cmd & pid=$!
  PID_LIST+=" $pid";
} done

trap "kill $PID_LIST" SIGINT

echo "Parallel processes have started";

wait $PID_LIST

echo
echo "All processes have completed";

答案1

您可以通过捕获 SIGCHLD 信号来检测子进程是否已经结束。

相关内容