[RISOLTO][BASH] rilanciare programma al crash

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Avatar utente
SuperStep
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 2037
Iscrizione: lunedì 19 dicembre 2011, 16:26
Desktop: Unity
Distribuzione: Ubuntu 16.04 LTS x86_64
Sesso: Maschile
Località: Somma Vesuviana (NA)

[RISOLTO][BASH] rilanciare programma al crash

Messaggio da SuperStep »

Salve, ho un programma che fa da server (non scritto da me) per un'altra applicazione che saltuariamente crasha.

vorrei fare in modo che quando questo programma crasha sia rilanciato automaticamente, una cosa del genere:

Codice: Seleziona tutto

while (true){
    programma
}
come si fa in bash?
Ultima modifica di SuperStep il martedì 29 novembre 2016, 6:12, modificato 1 volta in totale.
ubuntu 16.04 LTS 64-bit - Memoria: 31,3 Gib - Processore: Intel Core i7-5960X CPU @ 3.00 GHz × 16 - Grafica: AMD Radeon HD 7800 Series - Disco: SSD 256 GB x 4 (RAID 01)
rai
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2848
Iscrizione: domenica 11 maggio 2008, 18:03
Desktop: plasma
Distribuzione: 22.04
Località: Palermo

Re: [BASH] rilanciare programma al crash

Messaggio da rai »

Ciao
se in quel sistema è disponibile/installabile egrep io lo userei per controllare che l'applicazione sia viva e se non lo è la rieseguo
per esempio mettendo in crontab un rigo che esegua ogni tot uno script contenente

Codice: Seleziona tutto

#!/bin/bash

if ! egrep -f nome_della_app ; then
    <rilancio la app>
fi
oppure a secondo di quanto spesso bisogna controllare l'esistenza del processo si lancia una volta per tutte uno script che esegue il controllo continuamente

Codice: Seleziona tutto

#!/bin/bash

while: ; do
    if ! egrep -f nome_della_app ; then
        <rilancio la app>
    fi
done
inserendo uno sleep si può dosare meglio la frequenza di esecuzione di egrep
Avatar utente
crap0101
Rampante Reduce
Rampante Reduce
Messaggi: 8242
Iscrizione: martedì 30 ottobre 2007, 6:33
Desktop: LXDE
Distribuzione: Ubuntu 18.04.1 LTS
Sesso: Maschile
Località: TO
Contatti:

Re: [BASH] rilanciare programma al crash

Messaggio da crap0101 »

stavo anche pensando a utilizzare una specie di lock file al contrario, in modo che non venga rilanciato a prescindere (se è il caso) senza dover stoppare un ulteriore script o un cronjob. In ogni caso vedrei meglio proprio una soluzione tipo l'ipotesi di SuperStep (che anche in bash si scrive abbastanza simile :-D) con l'aggiunta di un controllo per verificare lo stato d'uscita

Codice: Seleziona tutto

while [ 1 ]; do
    command
    if [ $? -eq 0 ]; then
        break;
    fi
done
quindi praticamente si lancia questo al posto dell'eseguibile problematico.
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
rai
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2848
Iscrizione: domenica 11 maggio 2008, 18:03
Desktop: plasma
Distribuzione: 22.04
Località: Palermo

Re: [BASH] rilanciare programma al crash

Messaggio da rai »

crap0101 ha scritto:stavo anche pensando a utilizzare una specie di lock file al contrario, in modo che non venga rilanciato a prescindere (se è il caso) senza dover stoppare un ulteriore script o un cronjob. In ogni caso vedrei meglio proprio una soluzione tipo l'ipotesi di SuperStep (che anche in bash si scrive abbastanza simile :-D) con l'aggiunta di un controllo per verificare lo stato d'uscita

Codice: Seleziona tutto

while [ 1 ]; do
    command
    if [ $? -eq 0 ]; then
        break;
    fi
done
quindi praticamente si lancia questo al posto dell'eseguibile problematico.
Certo, non ci avevo pensato: se devo avere un altro processo attivo almeno che mi si chiuda da sé quando non serve più

Colgo l'occasione per chiedere che differenza può esserci tra il while [ qualsiasicosa ] e il while : ?
Avatar utente
crap0101
Rampante Reduce
Rampante Reduce
Messaggi: 8242
Iscrizione: martedì 30 ottobre 2007, 6:33
Desktop: LXDE
Distribuzione: Ubuntu 18.04.1 LTS
Sesso: Maschile
Località: TO
Contatti:

Re: [BASH] rilanciare programma al crash

Messaggio da crap0101 »

direi nessuna differenza sensibile, come anche con

Codice: Seleziona tutto

while true
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
Avatar utente
SuperStep
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 2037
Iscrizione: lunedì 19 dicembre 2011, 16:26
Desktop: Unity
Distribuzione: Ubuntu 16.04 LTS x86_64
Sesso: Maschile
Località: Somma Vesuviana (NA)

Re: [BASH] rilanciare programma al crash

Messaggio da SuperStep »

ok ho utilizzato la sintassi:

Codice: Seleziona tutto

while true; do
    command
    #sto pensando di aggiungere i log ma devo vedere come viene riportato lo stato di uscita
done
Grazie, chiudo.
ubuntu 16.04 LTS 64-bit - Memoria: 31,3 Gib - Processore: Intel Core i7-5960X CPU @ 3.00 GHz × 16 - Grafica: AMD Radeon HD 7800 Series - Disco: SSD 256 GB x 4 (RAID 01)
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 7 ospiti