Параллельная команда запускается в Linux

Я использовал следующий скрипт bash для параллельного запуска нескольких команд. На самом деле он ждет, пока все параллельные команды завершатся, а затем продолжит работу. Теперь я хочу изменить этот bash таким образом, чтобы он ожидал только первого «уничтожения», и не имеет значения, что это уничтожение происходит от выполнения какой команды. Любое предложение для этого?

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";
0
задан 14.04.2020, 15:34

1 ответ

Вы можете обнаружить, что подпроцесс завершился, перехватывая сигнал SIGCHLD.

0
ответ дан 14.04.2020, 15:34
  • 1
    Ожидание все еще должно быть там, или сценарий убежит нижняя часть. Сигнал CHLD инициирует прерывание и прервет ожидание. – AKGarhwal 14.04.2020, 15:35
  • 2
    Вы подразумеваете под заменой SIGINT с SIGCHLD и устранением строки $PID_LIST ожидания? – gjvdkamp 14.04.2020, 15:35

Теги

Похожие вопросы