Выполнить несколько программ одновременно в сценарии инициализации / bash - PullRequest
4 голосов
/ 10 января 2009

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

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

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

Ответы [ 3 ]

8 голосов
/ 10 января 2009

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

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

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

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

5 голосов
/ 22 августа 2011

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

Так вот так:

seq 4|xargs -i -n 1 -P 4 ./test{} 
4 голосов
/ 10 января 2009

Что-то вроде

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

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

...