2017-09-20 3 views
0

je lis cette question: "How do I write a bash script to restart a process if it dies" avec ce morceau de code:Bash - programme de redémarrage avec mono sur échec

until myserver; do 
    echo "Server 'myserver' crashed with exit code $?. Respawning.." >&2 
    sleep 1 
done 

Je veux utiliser ce code pour redémarrer mon programme .exe avec mono, mais après plusieurs tentatives I encore ne peut pas le faire

sudo nohup mono /home/pi/Desktop/Baykush/Baykush.exe > /home/pi/Desktop/Baykush/output.out 2>/home/pi/Desktop/Baykush/output.out & 
+0

Votre exe retourne un code de sortie? Pouvez-vous nous donner l'exemple du code que vous exécutez actuellement? –

+0

Il n'y a pas de code retour car, normalement, le programme ne s'arrête jamais. Mais j'ai une erreur que je veux gérer (tous les 6-7 jours), donc je veux le redémarrer quand il meurt – Okn

Répondre

0

Si votre programme démarre de manière asynchrone et détacher de votre shell en cours, vous ne pouvez pas contrôler son état normal en cours d'exécution en fonction de l'état de sortie, il est immédiatement sorties avec succès. Mais vous pouvez le dire avec pgrep:

sudo nohup while : ; do pgrep -f "mono /home/pi/Desktop/Baykush/Baykush.exe" || mono /home/pi/Desktop/Baykush/Baykush.exe ; done 2&1> /home/pi/Desktop/Baykush/output.out & 

pgrep -f pourrez prendre la ligne de commande fournie dans les processus en cours et se termine avec succès si la ligne de commande est présente.

De plus, la meilleure façon de le faire est d'utiliser Systemd service ou Supervisor