Upstart Cookbook建议延迟停止(
http://upstart.ubuntu.com/cookbook/#delay-respawn-of-a-job).使用不带参数的respawn节,它将继续尝试:
respawn post-stop exec sleep 5
(我从this Ask Ubuntu question得到这个)
要添加指数延迟部分,我尝试在后停止脚本中使用环境变量,我想如下:
env SLEEP_TIME=1 post-stop script sleep $SLEEP_TIME NEW_SLEEP_TIME=`expr 2 \* $SLEEP_TIME` if [ $NEW_SLEEP_TIME -ge 60 ]; then NEW_SLEEP_TIME=60 fi initctl set-env SLEEP_TIME=$NEW_SLEEP_TIME end script
**编辑**
要仅在重新生成时应用延迟,避免实际停止时的延迟,请使用以下内容检查当前目标是否“停止”:
env SLEEP_TIME=1 post-stop script goal=`initctl status $UPSTART_JOB | awk '{print $2}' | cut -d '/' -f 1` if [ $goal != "stop" ]; then sleep $SLEEP_TIME NEW_SLEEP_TIME=`expr 2 \* $SLEEP_TIME` if [ $NEW_SLEEP_TIME -ge 60 ]; then NEW_SLEEP_TIME=60 fi initctl set-env SLEEP_TIME=$NEW_SLEEP_TIME fi end script