バグをテストしたいのですが、そのためには PID が 99999 より大きい状況が必要です。bash スクリプト、for ループを考えています。何かアイデアはありますか?
答え1
目的の PID でプロセスを開始するには、次のようにします。
while true; do bash -c '[[ "$$" == 99999 ]] && echo PID is 99999'; done
目的の PID を取得するまで待ってから、echo
実際にテストする必要があるものにステートメントを置き換えることもできます。
参考文献
編集
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