Выполнить несколько программ одновременно в сценарии инициализации / bash

StackOverflow https://stackoverflow.com/questions/430176

  •  08-07-2019
  •  | 
  •  

Вопрос

Здравствуйте, я работаю с симулятором, который использует скрипты rcS для загрузки, это мой скрипт

cd /tests
./test1 &
./test2 &
./test3 &
./test4 
exit

Я хочу, чтобы все тесты выполнялись одновременно, и чтобы команда выхода выполнялась только после завершения всех предыдущих тестов. И это возможно не только после завершения теста 4? Спасибо.

Это было полезно?

Решение

Вы можете использовать wait:

./test1 &
./test2 &
./test3 &
./test4 &
wait

Со страницы руководства bash:

  

подождите [n ...]                 Дождитесь каждого указанного процесса и верните его   статус завершения. Каждый п может быть   идентификатор процесса или спецификация работы; если   задана спецификация работы, все процессы в   конвейер этой работы ждут.   Если n не задано,                 ожидаются все активные в данный момент дочерние процессы, и   статус возврата равен нулю. Если н   указывает на несуществующий процесс или   задание, статус возврата 127.   В противном случае возвращаемый статус   статус выхода последнего                 процесс или работа ожидали.

Другие советы

xargs может поддерживать параллель

Так вот так:

seq 4|xargs -i -n 1 -P 4 ./test{} 

Что-то вроде

cd /tests
./test1 &
./test2 &
./test3 &
./test4 &
wait
exit

(я предполагаю, что оболочка bash)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top