php
たとえば、順番に実行されるいくつかのスクリプトがあります。
php index.php import file1 --offline &&
php index.php import file2 --deleteUnused &&
php index.php import file3
今、私はこのparallel
コマンドを新たに見つけて、次のことを試しました。
parallel -j 3 -- "php index.php import file1 --offline" "php index.php import file2 --deleteUnused" "php index.php import file3"
そしてそれは素晴らしい作品です。
上記のすべてのコマンドを含むファイルを持ち、parallel
オプションを使用してファイルからコマンドの読み取りを開始できますか?
このような:
parallel -XX myFileWithCommands.txt
答え1
作るmyFileWithCommands.txt
:
php index.php import file1 --offline
php index.php import file2 --deleteUnused
php index.php import file3
その後実行平行線このように:
parallel -j 3 -- < myFileWithCommands.txt
答え2
まあ、私はこれを達成する2つの簡単な方法を想像できます。ファイルの内容にパイプするか、parallel
シェルスクリプトを作成できます。達成したいのがこの特定の作業セットだけであれば、シェルスクリプトがより適している可能性があります。これは非常に短くて簡単で、ポイントだけを説明します。
#!/bin/sh
parallel -j 3 -- "php index.php import file1 --offline" "php index.php import file2 --deleteUnused" "php index.php import file3"
もう少し一般的なものが必要な場合(たとえば、複数のコマンドセットを1つにロードできます)、単純なファイル形式を作成してからファイルの内容をパイピングすることから始めるのが簡単になりますparallel
。
最も簡単な方法は、実行したいコマンドをそのままテキストに含めることです。
たとえば、これがテキストファイル(test.txt
)の場合:
"php index.php import file1 --offline" "php index.php import file2 --deleteUnused" "php index.php import file3"
その後、次のコマンドを実行すると機能します。
$ cat test.txt | parallel -j 3 --
少し複雑なファイル形式を試すこともできます(たとえば、各コマンドは引用符で囲むことなく新しい行に表示されます)。この方法を使用するには、ファイルを転送する前にファイルを少し分析する必要がありますparallel
。awk
awk '<whatever patterns you match> { do something }' | parallel -j3 --
ただし、より柔軟で類似したファイル形式を作成することを決定した場合は、毎回入力する必要がないようにヘルパーシェルスクリプト(または関数)を作成すると便利です。