natamas (Member)
Pro
Messaggi: 115
Iscritto: 09/04/2006
|
Salve, vi chiedo di aiutarmi nella creazione di un piccolo file eseguibile in linux, un file .sh.
In poche parole io ho un processo/servizio in ubuntu versione server, con accesso tramite sftp o ssh perciò solo console, questo processo a volte crasha e si chiude.
A me servirebbe un piccolo programma che ogni 10 secondi controlla se il processo è attivo e se non lo è lo riapre.
Il problema e che io non ho mai lavorato su linux e non ne capisco molti di programmazione con esso o con c++.
Mi potreste aiutare? grazie
|
|
TheDarkJuster (Member)
Guru^2
Messaggi: 1620
Iscritto: 27/09/2013
|
Non ti serve uno script sh (che per inciso non è un eseguibile) ti serve il comando screen.
-apri il terminale e scrivi screen
-ctrl+a e poi c
-avvia da qui il programma
-ctrl+a e poi d
Da qui in poi anche se chiudi la connessione ssh il programma non sarà arrestato.
Se proprio ti interessa usando il comando screen c'è anche la possibilità di essere informati sullo stato del processo una volta sganciato.
|
|
ZioCrocifisso (Member)
Pro
Messaggi: 135
Iscritto: 06/03/2013
|
Codice sorgente - presumibilmente VB.NET |
#!/bin/sh while true do if [ -z "$(pgrep NOMEPROCESSO)" ]; then nohup COMANDO & fi sleep 10 done
|
Al posto di NOMEPROCESSO metti qualcosa contenuta esclusivamente nel nome del tuo processo, come il nome dell'eseguibile, mentre al posto di COMANDO il comando che fa partire il processo (eseguibile + eventuali argomenti).
Ultima modifica effettuata da ZioCrocifisso il 22/08/2014 alle 12:50 |
|
TheDarkJuster (Member)
Guru^2
Messaggi: 1620
Iscritto: 27/09/2013
|
zio, il processo si chiude quando si disconnette da ssh, non perchè crasha.....
|
|
ZioCrocifisso (Member)
Pro
Messaggi: 135
Iscritto: 06/03/2013
|
L'ha scritto lui che crasha.
|
|
TheDarkJuster (Member)
Guru^2
Messaggi: 1620
Iscritto: 27/09/2013
|
Già, allora fai eseguire quello script in uno screen così dormi sonni tranquilli
|
|
natamas (Member)
Pro
Messaggi: 115
Iscritto: 09/04/2006
|
lo script crasha... non centra che chiudo l'ssh
Screen già lo uso per altri programmi che funzionano in terminale.
Infatti io ho impostato il programma come service e lui si avvia da solo anche quando riavvio la macchina, però dopo diversi gg di lavoro crasha e mi serve qualcosa che controlli e se il processo non è aperto lo riapra.
Zio ha azzeccato, non so programmare per linux ma l'ambiente unix lo conosco un pò
ZioCrocifisso se creo un file .sh in questo modo funziona?:
Codice sorgente - presumibilmente VB.NET |
#!/bin/sh while true do if [ -z "$(pgrep ts3server_linux)" ]; then nohup /home/ts3/ts3server/ts3server_startscript.sh start & fi sleep 10 done
|
Grazie a tutti
Ultima modifica effettuata da natamas il 23/08/2014 alle 0:39 |
|
ZioCrocifisso (Member)
Pro
Messaggi: 135
Iscritto: 06/03/2013
|
Sì. Ovviamente devi dargli i permessi di esecuzione:
Codice sorgente - presumibilmente Plain Text |
chmod 777 /home/ts3/ts3server/ts3server_startscript.sh
|
|
|
TheDarkJuster (Member)
Guru^2
Messaggi: 1620
Iscritto: 27/09/2013
|
Ok scusa, avevo collegato la chiusura di ssh con la chiusura del programma, visto che ho avuto lo stesso problema
|
|