次の簡単な処理キューを考えてみましょう。
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
開始するよりも多くのプロセスを停止しています。