多数のプロセスを開始する for ループを作成するにはどうすればよいですか?

多数のプロセスを開始する for ループを作成するにはどうすればよいですか?

バグをテストしたいのですが、そのためには PID が 99999 より大きい状況が必要です。bash スクリプト、for ループを考えています。何かアイデアはありますか?

答え1

目的の PID でプロセスを開始するには、次のようにします。

while true; do bash -c '[[ "$$" == 99999 ]] && echo PID is 99999'; done

目的の PID を取得するまで待ってから、echo実際にテストする必要があるものにステートメントを置き換えることもできます。

参考文献

強制終了した後も同じ PID が使用されますか?

編集

PID 番号が大きくなるのはなぜですか? 異なる bash インスタンスを何度も実行しているためでしょうか?

あなたが言ったことが実際に起こっていることだと信じています。これは以下のように簡単にテストできます。

while true; do bash -c 'echo $$' ; done

PIDが増加し続けていることが分かりました。のマニュアルページを見るとbash

-c 文字列 -c オプションが存在する場合、コマンドは文字列から読み取られます。文字列の後に引数がある場合、それらは $0 から始まる位置パラメータに割り当てられます。

したがって、私の理解によれば、echo上記のテストの各ステートメントは個別のプロセスとして実行されており、そのため PID が増加していることがわかります。

答え2

何をしようとも、おそらくより良いアプローチがあるでしょうが、もしあなたが次のようなことを決意しているなら

while [[ 1 == 1 ]]; do sleep 10000& done

多数起動しますsleepsが、すべて起動するには時間がかかる場合があります。十分なプロセスができたら、 を押してループCtrl-Cを終了します。while

関連情報