我有2个,直到在bash中出现:
until grep "1" /var/tmp/machineip > /dev/null;
do
nova list --name spawningtestwin|grep spawningtestwin|awk -F= '{print $2}'|awk '{print $1}'|sed 's/ //g' > /var/tmp/machineip
done
mip=$(cat /var/tmp/machineip)
until ping -c1 $mip &>/dev/null; do :; done
我该如何限制到5分钟?如果5分钟后仍无反应,则应停止。
答案 0 :(得分:1)
TIMEOUT = 0;直到ping -c1 $ mip&> / dev / null ||测试“ $ TIMEOUT” -gt“ $((5 * 60))”;做:;睡觉1;超时= $(((超时+1));完成
您可以将5更改为您想要的分钟数。
答案 1 :(得分:1)
timeout
可能是一个不错的选择,但是由于您尝试运行循环,因此可能需要比您想要的语法更多的语法。如果那是您的首选,我相信我们可以举一个例子。
如果您想用老式的方法做...
declare -i now start=$(date +%s) # linux epoch timestamp in seconds
timeout=300 # 300s = 5m
until grep -q "1" /var/tmp/machineip
do now=$(date +%s) # linux epoch timestamp in seconds
if (( ( now - start ) < timeout )) # less than 5m
then nova list --name spawningtestwin |
awk -F= '/spawningtestwin/ {
gsub(/ +//,"",$2);
print $2
}' > /var/tmp/machineip
sleep 20
else echo taking too much time.
exit 1
fi
done
awk
不是我的堡垒。你们请在这方面检查我...
特别是awk -F= '{print $2}'|awk '{print $1}'
对我来说毫无意义。在 general 中,每当对awk
,sed
和/或grep
进行多次 simple 调用时,这使我认为他们可以被淘汰。