Chcę, aby Upstart zrobił dwie rzeczy:
- przestań tak szybko odradzać nieudany proces
- nigdy się nie poddawaj, próbując się odrodzić
W idealnym świecie upstart próbowałby ponownie uruchomić martwy proces po 1 s, a następnie podwoić to opóźnienie przy każdej próbie, aż osiągnie godzinę.
Czy coś takiego jest możliwe?
never give up trying to respawn
pozostaje bez odpowiedzi. ktoś?Odpowiedzi:
Upstart Cookbook zaleca opóźnienie po zatrzymaniu ( http://upstart.ubuntu.com/cookbook/#delay-respawn-of-a-job ). Skorzystaj ze
respawn
zwrotki bez argumentów, a ona będzie próbować na zawsze:(Mam to z tego pytania Zadaj Ubuntu )
Aby dodać część wykładniczą opóźnienia, spróbuję pracować ze zmienną środowiskową w skrypcie post-stop, myślę coś takiego:
** EDYTOWAĆ **
Aby zastosować opóźnienie tylko podczas odradzania, unikając opóźnienia przy rzeczywistym zatrzymaniu, skorzystaj z następujących poleceń, które sprawdzają, czy bieżącym celem jest „zatrzymanie”, czy nie:
źródło
post-start
może zresetować go do 1.Jak już wspomniano, użyj,
respawn
aby uruchomić odrodzenie.Jednak informacje na temat książki kucharskiej Upstart
respawn-limit
mówią o tym, że musisz określić,respawn limit unlimited
aby zachować ciągłe ponawianie prób.Domyślnie ponawia próbę, dopóki proces nie odrodzi się więcej niż 10 razy w ciągu 5 sekund.
Proponuję zatem:
źródło
Skończyło się
start
na tym, że robiłem cronjob. Jeśli usługa jest uruchomiona, nie ma to wpływu. Jeśli nie jest uruchomiony, uruchamia usługę.źródło
Poprawiłem odpowiedź Rogera. Zazwyczaj chcesz wycofać się, gdy występuje problem w oprogramowaniu bazowym powodującym jego awarię w krótkim czasie, ale po odzyskaniu systemu chcesz zresetować czas wycofania. W wersji Rogera usługa będzie spała zawsze przez 60 sekund, nawet w przypadku pojedynczych i pojedynczych awarii po 7 awarii.
źródło
Chcesz
respawn limit <times> <period>
- chociaż nie zapewniłoby to wykładniczego zachowania, którego szukasz, prawdopodobnie zrobiłoby to w większości przypadków użycia. Możesz spróbować użyć bardzo dużych wartościtimes
iperiod
do przybliżenia tego, co próbujesz osiągnąć. Zobacz sekcję man 5 init wrespawn limit
celu odniesienia.źródło
respawn limit 10 3600
10 prób, prawdopodobnie zostaną zużyte natychmiast - ponieważ domyślnie nie ma opóźnienia.Inni odpowiedzieli na pytania dotyczące zwrotek i limitów odradzania, ale chciałbym dodać własne rozwiązanie dla skryptu post-stop, który kontroluje opóźnienie między ponownym uruchomieniem.
Największy problem z rozwiązaniem zaproponowanym przez Rogera Duecka polega na tym, że opóźnienie powoduje zawieszenie się „restart jobName” aż do zakończenia snu.
Moje dodanie sprawdza, czy trwa restart, zanim zdecyduję, czy spać.
źródło