Синхронизация параллельных процессов в bash с 'time' - PullRequest
2 голосов
/ 15 мая 2009

Есть ли простой способ сделать эквивалент этого, но запустить два процесса одновременно с bash?

$ time sleep 5; sleep 8

time должен сообщать в общей сложности 8 секунд (или количество времени самой длинной задачи)

Ответы [ 5 ]

6 голосов
/ 15 мая 2009
$ time (sleep 5 & sleep 8 & wait)

real    0m8.019s
user    0m0.005s
sys     0m0.005s

Без каких-либо аргументов встроенная оболочка wait ожидает завершения всех фоновых заданий.

1 голос
/ 15 мая 2009

Использование снов в качестве примеров.

Если вы хотите только время первого процесса, то

time sleep 10 & sleep 20

Если вы хотите синхронизировать оба процесса, то

time (sleep 10 & sleep 20)
1 голос
/ 15 мая 2009
time sleep 8 & time sleep 5

Оператор & заставляет первую команду выполняться в фоновом режиме, что практически означает, что две команды будут выполняться одновременно.

0 голосов
/ 19 мая 2012

Если у вас установлен GNU Parallel http://www.gnu.org/software/parallel/, вы можете сделать это:

time parallel sleep ::: 5 8

Вы можете установить GNU Parallel просто:

wget http://git.savannah.gnu.org/cgit/parallel.git/plain/src/parallel
chmod 755 parallel
cp parallel sem

Посмотрите вступительные видео для GNU Parallel, чтобы узнать больше: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1

0 голосов
/ 15 мая 2009

Извините, мой вопрос, возможно, был не совсем ясен в первый раз, но я думаю, что нашел ответ, благодаря некоторому указанию, приведенному здесь.

time sleep 5& time sleep 8

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

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