Выполнить команду сценария параллельно - PullRequest
0 голосов
/ 06 июня 2018

у меня есть скрипт bash, который мне нужно запустить на нем две команды параллельно

Например, я выполняю команду npm install, которая занимает некоторое время (20 -50 секунд)

и я запускаю его в двух разных папках по порядку: сначала npm install в папке books, а вторая - для папки orders, есть ли способ запустить оба параллельно в сценарии оболочки?

Например, предположим, что скрипт выглядит следующим образом:

#!/usr/bin/env bash

   dir=$(pwd)

  cd $tmpDir/books/  

  npm install

  grunt

  npm prune production 
  cd $tmpDir/orders/

  npm install

  grunt

 npm prune production 

1 Ответ

0 голосов
/ 06 июня 2018

Вы можете использовать & для запуска процесса в фоновом режиме, например:

#!/bin/sh

cd $HOME/project/books/
npm install &

cd $HOME/project/orders/
npm install &

# if want to wait for the processes to finish
wait

Для запуска и ожидания вложенных / нескольких процессов вы можете использовать подоболочку (), например:

#!/bin/sh

(sleep 10 && echo 10 && sleep 1 && echo 1) &

cd $HOME/project/books/
(npm install && grunt && npm prune production ) &

cd $HOME/project/orders/
(npm install && grunt && npm prune production ) &

# waiting ...
wait

В этом случае обратите внимание на то, что команды находятся в пределах () и используют &&, что означает, что только правая сторона будет оценена, если левый размер будет успешным (выход 0), например, для примера:

(sleep 10 && echo 10 && sleep 1 && echo 1) &
  • Создает подоболочку, помещающую вещи между ()
  • , запускает sleep 10, и если успешно &&, затем запускает echo 10, если успешно &&затем запустите sleep 1, а в случае успеха && запустите echo 1
  • и запустите все это в фоновом режиме, завершив команду с &
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...