Как объединить несколько процессов в оболочке? - PullRequest
3 голосов
/ 26 февраля 2011

Итак, я сделал небольшой двоичный файл c ++ для подключения, чтобы выполнить команду на сервере для его стресс-тестирования, поэтому я начал работать над следующим сценарием оболочки:

#!/bin/bash

for ((  i = 0 ;  i <= 15;  i++  ))
do
   ./mycppbinary test 1 &
done

Теперь я тожехотеть времени, сколько все процессы занимают, чтобы выполнить.Я полагаю, мне нужно будет выполнить команду времени для каждого из этих процессов?

Можно ли присоединиться к этим процессам, как если бы они были потоком?

Ответы [ 4 ]

9 голосов
/ 26 февраля 2011

Вы не присоединяетесь к ним, вы wait на них. Как минимум в bash и, возможно, в других оболочках с контролем заданий.

0 голосов
/ 26 февраля 2011

1-й, сделать скрипт последним так же, как и все его дочерние элементы

Сценарий, который вы предлагаете, умрет до того, как процессы завершатся, потому что вы запускаете их в фоновом режиме. Если вы не хотите, чтобы это происходило, вы можете сделать столько wait, сколько нужно (как предложил Кит).

2-й, время сценария

Затем вы можете рассчитать время выполнения вашего скрипта, и это даст вам общее время выполнения, как вы и просили.

0 голосов
/ 26 февраля 2011

Вы можете использовать команду bash fg, чтобы вернуть последний фоновый процесс обратно на передний план.Сделайте это в другом цикле, чтобы перехватить их все, хотя некоторые могут завершиться до этого, что приведет к ошибке об отсутствии такого процесса.Вы не присоединяетесь к процессам, они не являются потоками, каждый из них имеет свой собственный pid и уникальное пространство памяти.

0 голосов
/ 26 февраля 2011

Вы можете рассчитать время своего сценария оболочки, который даст вам общее время выполнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...