Linuxで並列コマンドと順次コマンドを組み合わせる方法がわかりません。
擬似コード:
pip install pipenv
sequentialpipenv install --dev
parallelタスク
npm install -g grunt-cli
sequentialnpm install
Windowsバッチ動作と同等:
start cmd /C "pip install pipenv & pipenv install --dev"
start cmd /C "npm install -g grunt-cli & npm install"
&
およびwait
はこの問題を解決できます。 rsawコメントを参照してください。 ) 。parallelshell を試してみます:
parallelshell "pip install pipenv && pipenv install --dev" "npm install -g grunt-cli && npm install"
フル.sh
ファイル:
git clone --depth 1 https://github.com/Kristinita/KristinitaPelican
wait
cd KristinitaPelican
wait
parallelshell "pip install pipenv && pipenv install --dev" "npm install -g grunt-cli && npm install"
しかし、最初はpipenv install --dev
コマンドを実行してから、npm install
。並列ではなく、順次です。
単にGNU parallel
:
parallel ::: 'pip install pipenv && pipenv install --dev' \
'npm install -g grunt-cli && npm install'
Windowsコマンドに相当するUnixスタイルは次のとおりです。
(pip install pipenv && pipenv install --dev) >& pip.log &
(npm install -g grunt-cli && npm install) >& npm.log &
これにより、バックグラウンドで2つのサブシェルが開始されます。1つはpip
を実行してからpipenv
を実行し(pip
がエラーなしで完了した場合)、もう1つは2つのnpm
を実行します。コマンド。コマンドの出力の両方のセットは、物事を理解しやすくするためにログファイルにリダイレクトされます。
これらのコマンドがすべて完了するのを待ってから続行する必要がある場合は、
wait
あなたがすでに発見したように。
POSIXスタイルのシェルを使用してタスクを順序付けおよび並列化する場合、2つのツールを自由に使用できます。
&
を使用)、タスクの完了を待つことができます(wait
を使用)。これは、現在のタスクなどの単純な要件には十分であり、かなり長い道のりを歩むことができます。より複雑なユースケースには、より高度なツールがあります。 GNU Parallelはその1つです。より細かいリソース制御が必要な場合は、バッチツールを検討する価値もあります。