Tengo algunas aplicaciones que necesitan ejecutarse en mi computadora portátil todo el tiempo.
Yo uso un script bash para iniciar estas aplicaciones. En mi script tengo un bucle que se parece a esto:
while true;
do
xterm
done
Esto ejecuta una aplicación ( xterm
en este caso) y si la aplicación falla, el bucle comienza de nuevo.
Esto tiene la desventaja de que no hay una salida "limpia" de este bucle. Entonces, incluso si la intención del usuario es cerrar xterm
, el ciclo comienza de nuevo.
¿Hay alguna manera de iniciar una aplicación desde el script bash, observar si se está ejecutando, volver a ejecutarla si el script falla o no hacer nada si el usuario la cerró correctamente?
while xterm; do true; done
while ! xterm; do :; done
!
.En la
while
condición, puede probar si el estado de salida dexterm
fue exitoso o no con algo como esto:$?
La variable contiene el estado de salida del último comando ejecutado.fuente
Te sugiero que uses.
hasta xterm; ¿echo "el programa terminó con el estado $?" ; hecho
Esto volverá a ejecutar su programa si se mata.
fuente
Intente usar supervisor, es muy simple y fácil agregar un programa o script para ejecutar . En su caso, lo mínimo que necesita
command
y tal vezexitcodes
en la sección programx para configurar.El valor predeterminado
exitcodes
es 0,2, por lo que significa:En general, es lo que desea: vuelva a ejecutarlo si el script se bloqueó o no haga nada si el usuario lo cerró correctamente (o el script se completó correctamente)
pruebe la configuración más simple primero:
Para mayor flexibilidad, consulte la documentación del archivo de configuración .
fuente