El siguiente script bash inicia un Apache Tomcat y sigue el archivo de registro hasta la pantalla:
#!/bin/bash
~/tomcats/TC1_8083/bin/startup.sh
tail -f ~/tomcats/TC1_8083/logs/catalina.out
Si presiono CTRL-C en la cola, el script bash finaliza y Tomcat continúa ejecutándose correctamente incluso si cierro la sesión. Sin embargo, si mi sesión muere (por ejemplo, debido a una desconexión de la red) MIENTRAS la cola todavía está funcionando, Tomcat también se detiene. Si hubiera presionado CTRL-C en la cola, entonces el Tomcat no se detendrá hasta que decida matarlo.
No estoy interesado en mantener viva la cola en una desconexión de la red, solo quiero que Tomcat continúe ejecutándose de todos modos.
No puedo entender este comportamiento. ¿Alguien puede explicarlo? Además, ¿cómo podría cambiar el script para que Tomcat continúe ejecutándose incluso si la red se desconecta?
Respuesta1
Cuando llamas a un script desde otro script, se ejecuta en segundo plano (de lo contrario, tendrías dos scripts ejecutándose simultáneamente en primer plano, ambos intentando salir a la pantalla)
Cuando presiona Ctrl-C, envía una señal de interrupción a su secuencia de comandos (no solo la cola), pero la secuencia de comandos de Tomcat continúa ejecutándose en segundo plano ya que es una secuencia de comandos separada.
Cuando su sesión finaliza, todos los scripts en ejecución finalizan, incluidos los que se ejecutan en segundo plano.
Si desea que los scripts continúen ejecutándose cuando se desconecta de la red (intencionalmente o no), le recomiendo tmux o screen.