0

次のスクリプトがあります。

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 行が一度に書き込まれ、出力がすべて混同されます。

どういうわけか入力をキャプチャしてから、一度に、または一連の反復ごとに書き込む必要があると思いますが、これを行う方法については空白にしています。

4

2 に答える 2