uruchamiać ponownie program co x minut?


10

Mam wielowątkowy program Java, który korzysta z biblioteki typu open source, a ta biblioteka zawiera kilka błędów, które powodują zakleszczenie. Zgłoszono błąd, ale jego naprawienie zajmie trochę czasu. Będę musiał kontynuować korzystanie z tego programu i tak długo, jak to będzie możliwe. uruchamia się ponownie co 2-3 godziny, zrobi to za mnie. Czy jest jakiś sposób, aby program uruchamiał się ponownie co x minut?


3
Możesz napisać skrypt, który zabija i ponownie uruchamia zadanie co 2-3 godziny.
gt6989b,

Aby śledzić to, co @ gt6989b, napisałbym skrypt w języku Python, który po prostu zapętla się i czeka, aż miną 2-3 godziny, a następnie ponownie uruchomi program. Przydatne mogą być podprocesy i moduły sh Pythona .
Przełom

Odpowiedzi:


12

Możesz spróbować zrobić w crontab:

crontab -e

następnie

 11 */3 * * * /usr/bin/pkill -f appli_name; /path/to/appli_name & &>/dev/null

crontabŚrednią polecenie:

  • co 3 godziny
  • zabij nazwę aplikacji
  • uruchom nazwę aplikacji w tle

W ten sposób obecnie rozwiązuję podobny problem. Ponownie uruchamiam określone oprogramowanie co noc o 0:00 za pośrednictwem crona, ponieważ oprogramowanie ma tendencję do uszkodzenia pliku stanu po 4-5 dniach. Zainstalowałem oprogramowanie jako usługę, a następnie uruchomiłem service <appname> restart > /dev/null 2>&1w żądanym czasie.
Daniel Andersson

2

Sugeruję, aby skonfigurować Supervisora do swojego zadania. Może monitorować proces, restartować, jeśli się nie powiedzie, zapewnia również przekierowanie wyjścia i inne miłe funkcje. Zobacz przykład programu, aby rozpocząć.


+1, wydaje się, że jest to bardziej „czyste” rozwiązanie w przeciwieństwie do crontab(chociaż oba rozwiązania działają dobrze). Uważam jednak, że Supervisor jest lepszy w konfigurowaniu, jakie sygnały wysłać proces i kiedy (tj. Kiedy wysłać SIGTERMi jak długo czekać przed wysłaniem SIGKILLitp.).
Przełom
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.