This solutionに基づいて、実行中のプロセス数を4に制限するスクリプトを作成しようとしています。しかし、代わりに、ジョブをIインデックスによる参照。私は次のように書いています:スクリプトを使用して限られた数の並列プログラムを実行しています
todo_array[1]="echo start1;sleep 3;echo done1"
todo_array[2]="echo start2;sleep 3;echo done2"
todo_array[3]="echo start3;sleep 3;echo done3"
todo_array[4]="echo start4;sleep 3;echo done4"
todo_array[5]="echo start5;sleep 3;echo done5"
todo_array[6]="echo start6;sleep 3;echo done6"
todo_array[7]="echo start7;sleep 3;echo done7"
todo_array[8]="echo start8;sleep 3;echo done8"
todo_array[9]="echo start9;sleep 3;echo done9"
max_jobs=4
seq ${#todo_array[@]} | xargs -i --max-procs=$max_jobs bash -c $todo_array[{}]
しかし、私は空の9改行出力を取得しています。 私は何が間違っていますか? おかげで
EDIT:私は
seq ${#todo_array[@]} | xargs -i --max-procs=$max_jobs bash -c "$todo_array[{}]"
にそれを修正し、私は次のような奇妙な出力取得しています:あなたの質問は、教育ではなく、単に「どのように実行する場合
start1
start1
start1
start1
done1[2]
done1[3]
done1[1]
done1[4]
start1
start1
start1
start1
done1[5]
done1[6]
done1[7]
done1[8]
start1
done1[9]
私はあなたのスクリプトを実行する場合、私は空の改行を得ることはありません。 bash:[3]:コマンドが見つかりませんでした。 bash:[2]:コマンドが見つかりませんでした。 bash:[4]:コマンドが見つかりません。 bash:[1]:コマンドが見つかりませんでした。 –
私はあなたがおそらく "&"(並行してジョブを実行する)と "$$"(開始した各バックグラウンドジョブのPIDを追跡したい)と思っています。 – paulsm4
配列参照には中括弧が必要です。 '$ {todo_array [1]}'。しかし、 'xargs -IX --max-procs = $ max_jobs bash -c" $ {todo_array [X]} "は私のためには機能しません。 –