web-dev-qa-db-ja.com

1つのコマンドで複数のプロセスを生成します

1つのコマンドでプロセスのたとえば10個のインスタンス(たとえばyes)を作成する方法はありますか?

$instantiate 10 yes
2
ihatetoregister

次のようなもので大丈夫ですか?これは、bash(ブレース拡張用)とGNU並列)を想定しています。

parallel -N0 -j0 -u yes ::: {1..10}

-j0設定は、パラメータと同じ数のプロセスが開始されることを確認するためにあり、-u(グループ解除)があり、各プロセスの出力が利用可能になるとすぐに出力されます(yesの場合、出力が無限であるため、これは重要です)。 -N0引数がコマンドラインに挿入されないようにします。

5
dhag

@dhagには確かに1行の答えがありますが、構文によって目が痛くなります。 :)

あなたが単一のコマンドを要求し、シェルが単一の(複合)コマンドを実行することを検討しているので、私はこのはるかに読みやすいバージョンで正当化されていると感じています:

_for i in {1..10}; do yes &; done
_

一部のシェルは自動的にバックグラウンドジョブをNice(2)するため、それが問題である場合、これは最善の解決策ではないことに注意してください。

2
Azhrei