AIXでxargsなどの「--max-procs」を使用してキューを処理する方法は?

AIXでxargsなどの「--max-procs」を使用してキューを処理する方法は?

次の簡単な処理キューを考えてみましょう。

cat list.txt | xargs -n1 -P20 process.sh 

-P または --max-procs)

AIXで似たようなものを持つ方法は?

答え1

xargsをkshスクリプトに置き換えることで、同じことをシミュレートできます。たとえば、

#!/bin/ksh
nproc=0 max=20
trap 'let nproc--' sigchld
while read file
do    while [ $nproc -ge $max ]
      do sleep 1
      done
      process.sh "$file" &
      let nproc++
done
wait

シェル変数は、nprocバックグラウンドで実行されているプロセスの数を計算します。プロセスが終了すると、シェルはSIGCLD信号をトラップして変数を減らします。睡眠ポーリングループがmax開始するよりも多くのプロセスを停止しています。

関連情報