我有以下脚本:
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
它正在调用另一个脚本 account_locate_by_phonenumber.sh,该脚本通过 ssh 从远程 mysql 服务器获取结果。
如果我不后台调用该脚本,我没有问题。问题出现在后台呼叫时。我目前进行十次迭代,然后调用 wait 以短暂暂停而不完全压倒远程服务器。大多数写的行都很好,但每隔一段时间(10-50行之间)就会同时写两行,并且输出都混在一起了。
我假设我需要以某种方式捕获输入,然后一次全部写入,或者每组迭代,但我对如何做到这一点一无所知。