J'ai certaines applications qui doivent fonctionner sur mon ordinateur portable tout le temps.
J'utilise un script bash pour démarrer ces applications. Dans mon script, j'ai une boucle qui ressemble à ceci:
while true;
do
xterm
done
Cela exécute une application ( xterm
dans ce cas) et si l'application plante, la boucle la redémarre.
Cela a pour inconvénient qu'il n'y a pas de sortie "propre" de cette boucle. Ainsi, même si l'intention de l'utilisateur est de fermer xterm
, la boucle recommence.
Existe-t-il un moyen de démarrer une application à partir du script bash, de vérifier si elle est en cours d'exécution, de la réexécuter si le script s'est écrasé ou de ne rien faire si l'utilisateur l'a fermée correctement?
while xterm; do true; done
while ! xterm; do :; done
!
.Dans la
while
condition, vous pouvez tester si l'état de sortie dexterm
a réussi ou non avec quelque chose comme ceci:$?
La variable contient l'état de sortie de la dernière commande exécutée.la source
Je vais vous suggérer d'utiliser.
jusqu'à xterm; echo "le programme s'est terminé avec le statut $?" ; terminé
Cela réexécutera votre programme s'il est tué.
la source
Essayez d'utiliser le superviseur, il est très simple et facile d' ajouter un programme ou un script à exécuter . Dans votre cas, vous avez besoin d'un minimum
command
et peut-êtreexitcodes
dans la section programx pour configurer.La valeur par défaut
exitcodes
est 0,2, ce qui signifie:En général, c'est ce que vous voulez: relancez- le si le script s'est écrasé ou ne faites rien si l'utilisateur l'a fermé correctement (ou script terminé avec succès)
essayez d'abord la configuration la plus simple:
Pour plus de flexibilité, voir la documentation du fichier de configuration .
la source