次のスクリプトがあります。
loop=0
for did in $(echo "$dids")
do
echo "$did"
loop=$((loop+1))
if [ $loop -lt 10 ] ; then
./account_locate_by_phonenumber.sh "$did" 2>/dev/null >>accounts.csv &
else
wait
#make sure to call locate script again or we'll skip this phone number
./account_locate_by_phonenumber.sh "$did" 2>/dev/null >>accounts.csv &
loop=0
fi
done
ssh経由でリモートmysqlサーバーから結果を取得する別のスクリプトaccount_locate_by_phonenumber.shを呼び出しています。
そのスクリプトへの呼び出しをバックグラウンドにしなければ、問題はありません。問題は、通話をバックグラウンド化するときに発生します。私は現在、リモートサーバーを完全に圧倒しないように一時停止するために、10回の反復を行ってから待機を呼び出します。ほとんどの行は正常に書き込まれますが、ときどき (10 ~ 50 行) 2 行が一度に書き込まれ、出力がすべて混同されます。
どういうわけか入力をキャプチャしてから、一度に、または一連の反復ごとに書き込む必要があると思いますが、これを行う方法については空白にしています。