2017-09-20 1 views
0

Ich lese diese Frage: "How do I write a bash script to restart a process if it dies" mit diesem Stück Code:Bash - Neustart Programm mit Mono auf scheitern

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

Ich möchte diesen Code verwenden, um meine exe-Programm mit Mono Neustart aber nach mehreren Versuchen habe ich noch kann es nicht

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

Ist Ihr exe einen Exit-Code zurückkehrt? Können Sie uns das Beispiel des Codes geben, den Sie gerade ausführen? –

+0

Es gibt keinen Rückkehrcode, weil das Programm normalerweise nie stoppt. Aber ich habe einen Fehler, den ich behandeln will (alle 6-7 Tage), also möchte ich es neu starten, wenn es stirbt – Okn

Antwort

0

Wenn Ihr Programm asynchron beginnt und von der aktuellen Shell lösen, können Sie es Zustand nicht kontrollieren kann, basierend auf Exit-Status läuft, dann ist es Ausfahrten sofort mit Erfolg. Aber man kann es mit pgrep angeben:

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 wird in laufenden Prozessen und tritt mit Erfolg mitgelieferten Befehlszeilen finden, wenn Befehlszeile vorhanden ist.

Auch der bessere Weg, dies zu tun Systemd service oder Supervisor verwendet