„Odradza się zbyt szybko, zatrzymany”. Jak wyłączyć UPSTART na 5 minut?

11

W dawnych czasach demon init zwykł wyłączać zadania, które odradzały się zbyt szybko.

Odkryłem na własne ryzyko, że UPSTART po prostu ich zatrzymuje. na zawsze.

Znalazłem formanty COUNT i INTERVAL, kiedy należy zatrzymać zadanie, które odradza się szybko, ale nie mogę znaleźć sposobu na ponowne uruchomienie tego zadania po określonym czasie oczekiwania.

  • To jest dla zdalnego serwera, który musi połączyć się przez ssh, aby móc z powrotem do niego tunelować. Ale regularnie występują problemy z połączeniem i zadanie, które uruchamia połączenie ssh, umiera! Głupio spodziewałem się, że upart będzie kontynuował pracę.

Czy istnieje sposób, czy muszę zrobić coś takiego, jak uruchomić zadanie CRON, aby sprawdzić, czy jest uruchomione, a jeśli nie, uruchom je ponownie?

Keith
źródło

Odpowiedzi:

10

Funkcja Upstart pozwala na uśpienie po zatrzymaniu w celu opóźnienia ponownego uruchomienia zadania. Od http://upstart.ubuntu.com/cookbook/#delay-respawn-of-a-job

post-stop exec sleep 5

Teraz, gdy zadanie się nie powiedzie, zaczeka 5 sekund przed ponowną próbą nawiązania połączenia. Połącz to z ustawieniem odrodzenia na około 10 razy w ciągu 30 sekund i powinno ono próbować odrodzić się na zawsze (spróbuje tylko 7 razy w ciągu 30 sekund, więc nie powinno zostać wyrzucone z odrodzenia)

tgm4883
źródło
Tak, to chyba dobre obejście. Zastanawiam się jednak, czy upstart powinien mieć możliwość określenia czasu oczekiwania przed ponowną próbą uruchomienia zadania. Naprawdę nie podoba mi się pomysł, aby po prostu zatrzymać pracę martwą. Zdecydowanie wolałem sposób, w jaki init wyłącza zadanie na pięć minut.
Keith,
Myślę, że przypadek użycia, o którym mówisz, jest dość niski. Jeśli zadanie kończy się niepowodzeniem, istnieje ku temu powód, dlatego należy je naprawić. Większość ludzi nie chce, aby zadanie kontynuowało próbę rozpoczęcia i niepowodzenia, ponieważ mogłoby to wyczyścić dzienniki zawierające cenne informacje lub mieć inne katastrofalne skutki. Myślę, że używasz upstart do czegoś, do czego nie został zaprojektowany, więc standardowe metody ponownego uruchomienia mogą być wykluczone. To powiedziawszy, czy połączenie sieciowe na tym komputerze próbuje się połączyć ponownie, gdy połączenie zostanie zerwane? Jeśli tak, możesz zacząć pracę od rozpoczęcia pracy w sieci.
tgm4883,
1
Jestem pewien, że masz rację, że nie jest to przypadek „większości ludzi”. Ponieważ przez ostatnie 20 lat hakowałem oprogramowanie typu slackware i systemy niestandardowe, wiele z tych koncepcji jest mi obcojęzycznych. Czy możesz wskazać mi właściwy kierunek, aby dostosować start / restart sieci Ubuntu? Boże, to sprawia, że ​​czuję się stary i bez kontaktu. Mógłbym to zrobić na slackware w 10 sekund.
Keith,
1
jest to opisane w książce kucharskiej; zalecają użycie zwrotki post-stop: upstart.ubuntu.com/cookbook/#id379
jcomeau_ictx
1
Dzięki @jcomeau_ictx, to jest dokładnie to, myślę, że odpowiedź powinna zostać zaktualizowana z linkiem do niej upstart.ubuntu.com/cookbook/#delay-respawn-of-a-job . Istnieje również zaakceptowany bilet i łatka na żądanie Keitha bugs.launchpad.net/upstart/+bug/252997 z czasem oczekiwania na odrodzenie przed ponowną próbą .
Andre Miras,