Upstart Cookbook khuyên bạn nên trì hoãn sau dừng ( http://upstart.ubfox.com/cookbook/#delay-respawn-of-a-job ). Sử dụng khổ respawn
thơ mà không cần tranh luận và nó sẽ tiếp tục cố gắng mãi mãi:
respawn
post-stop exec sleep 5
(Tôi đã nhận được điều này từ câu hỏi Hỏi Ubuntu này )
Để thêm phần trì hoãn theo cấp số nhân, tôi sẽ thử làm việc với một biến môi trường trong tập lệnh dừng sau, tôi nghĩ một cái gì đó như:
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
** CHỈNH SỬA **
Để chỉ áp dụng độ trễ khi hồi sinh, tránh độ trễ khi dừng thực sự, hãy sử dụng cách sau, để kiểm tra xem mục tiêu hiện tại có "dừng" hay không:
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
never give up trying to respawn
vẫn chưa được trả lời. bất kỳ ai?