riavviare il programma ogni x minuti?


10

Ho un programma Java con mutithreading che utilizza una libreria opensource e questa libreria presenta alcuni bug che causano deadlock. Ho segnalato il bug ma ci vorrà del tempo per ripararlo, dovrei continuare a usare questo programma e finché si riavvia ogni 2-3 ore farà il lavoro per me. Esiste un modo per riavviare il programma ogni x minuti?


3
Potresti scrivere uno script che ucciderebbe e riavviare l'attività ogni 2-3 ore.
gt6989b,

Per dare seguito a ciò che @ gt6989b, scriverei uno script Python che semplicemente scorre e attende fino a quando non sono trascorse 2-3 ore, quindi riavvia il programma. Potresti trovare utile il sottoprocesso di Python e i moduli sh .
Sfondamento

Risposte:


12

Puoi provare a fare nel tuo crontab:

crontab -e

poi

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

Il crontabcomando significa:

  • ogni 3 ore
  • uccidi nome_appli
  • avvia appli_name in background

Ecco come risolvo attualmente un problema simile. Riavvio un determinato software ogni notte alle 0:00 tramite cron, poiché il software ha la tendenza a corrompere il suo file di stato dopo 4-5 giorni. Ho installato il software come servizio e quindi eseguito service <appname> restart > /dev/null 2>&1nei momenti desiderati.
Daniel Andersson,

2

Ti suggerisco di configurare Supervisor per il tuo compito. Può monitorare il processo, riavviare se fallisce, fornisce anche il reindirizzamento dell'output e altre belle funzionalità. Vedi l' esempio per iniziare il programma .


+1, questa sembra essere una soluzione più "pulita" rispetto a crontab(sebbene entrambe le soluzioni funzionino bene). Tuttavia, trovo che Supervisor sia migliore nel configurare quali segnali inviare un processo e quando (ovvero quando inviare SIGTERMe quanto tempo attendere prima dell'invio SIGKILL, ecc ...).
Sfondamento
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.