Oppure

Loading
21/08/14 22:15
natamas
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 :)
aaa
22/08/14 10:13
TheDarkJuster
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.
aaa
22/08/14 10:49
ZioCrocifisso
#!/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 22/08/14 10:50
aaa
22/08/14 11:52
TheDarkJuster
zio, il processo si chiude quando si disconnette da ssh, non perchè crasha.....
aaa
22/08/14 12:02
ZioCrocifisso
L'ha scritto lui che crasha.
aaa
22/08/14 19:30
TheDarkJuster
Già, allora fai eseguire quello script in uno screen così dormi sonni tranquilli
aaa
22/08/14 22:37
natamas
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?:
#!/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 :k:
Ultima modifica effettuata da natamas 22/08/14 22:39
aaa
23/08/14 8:48
ZioCrocifisso
Sì. Ovviamente devi dargli i permessi di esecuzione:
chmod 777 /home/ts3/ts3server/ts3server_startscript.sh
aaa