2011-09-07 4 views
1

Si mon logiciel a été interrompu en raison d'une erreur, y a-t-il un moyen pour qu'Ubuntu le rouvre immédiatement? J'utilise g ++ sample.cpp -o échantillon et ./sampleRedémarrage automatique, Linux

Mais s'il plante, c'est vraiment un problème pour moi. Quelle serait la solution? Merci.

Répondre

4

Un script bash simple?

#! /bin/bash 

until ./my_app; do 
    sleep 2 # To prevent insanity 
done 
+0

Mieux que la réponse acceptée, car elle donne au programme la possibilité de quitter volontairement. – Zoey

+0

+1 C'est le genre de script que tout le monde devrait avoir à portée de main. – Iterator

+0

J'utilise ubuntu et je fais cela root @ monstenation: ~ #!/Bin/bash -bash:!/Bin/bash: événement non trouvé Pourquoi est-ce? – Eli

1

Une solution simple serait simplement de faire un script shell pour démarrer le programme chaque fois qu'il termine l'exécution.

exemple:

#!/bin/bash 
while true 
do 
    ./sample 
done 

Vous pouvez enregistrer un fichier journal ou la sortie du programme chaque échantillon de temps se termine l'exécution.

+0

Un problème possible avec cette (et certains des autres solutions) est que si quelque chose se passe mal, le programme se bloque rapidement chaque fois que vous le lancez, vous l'exécutez plusieurs fois. Vous pourriez envisager d'ajouter 'sleep' à la boucle. –

+0

J'utilise ubuntu et je fais cela root @ monstenation: ~ #!/Bin/bash -bash:!/Bin/bash: évènement non trouvé Pourquoi est-ce? – Eli

+0

Enregistrez le contenu dans un script, ex 'foo.sh'. Puis rendez-le exécutable avec 'chmod + x foo.sh'. Ensuite, exécutez comme ceci: './Foo.sh'. Vous pouvez également entrer chaque ligne à l'invite bash, quittez la première ligne (bien que vous devriez probablement l'enregistrer en tant que script si vous prévoyez de l'exécuter à nouveau). –

0

Une autre approche est d'avoir un démon maître qui obtient cœur bat fréquemment du programme que vous souhaitez surveiller et quand battements de coeur ne sont pas reçus, démarrez le programme qui est surveillé.

0

Peut-être surpuissant pour ce que vous êtes après, il est difficile de dire, mais le God monitoring framework pourrait aider - un peu plus avancé et fonctionnalités FUL qu'un simple while (1)

+0

Bon dieu (sans jeu de mots, mais ...), c'est un diable d'un système - il ne s'arrête pas de réécrire un shell entier (et peut faire des choses qu'un shell ne peut pas). – Iterator

+0

Eh bien oui, j'ai dit que ça pourrait être un peu exagéré;) –

Questions connexes