web-dev-qa-db-ja.com

bashスクリプトのループでプロセスを並行して実行する方法はありますか

重複の可能性:
forループの並列化

元のコードは次のようになります。

 for i in *; do something.py $i; done

次のようなバックグラウンドでこれらのジョブを並行して実行できるかどうか疑問に思っていました。

 for i in *; do something.py $i &; done

試してみたところ、ここの&は機能しません。

さらに、より良い方法は、bashが8つのジョブ(または任意の数)を一緒に実行できるようにすることですバックグラウンドのキュー内、しかし私はそれを行う方法がわかりません...

誰かがこれについてアイデアを持っていますか?ありがとう!

6
Firegun

;文字を削除するだけなので、最後に:

 for i in *; do something.py $i & done

また、スクリプトの[〜#〜] n [〜#〜]インスタンスを同時に実行するには、man 1 parallelを参照してください。

http://www.gnu.org/software/parallel/ を参照してください

7
Gilles Quenot