Por que esse arquivo bash pára meu tomcat se a sessão for fechada?

0

O seguinte script bash inicia um Apache Tomcat e transforma o arquivo de log na tela:

#!/bin/bash
~/tomcats/TC1_8083/bin/startup.sh
tail -f ~/tomcats/TC1_8083/logs/catalina.out

Se eu mudar o CTRL-C, o script bash termina e o Tomcat continua a rodar corretamente, mesmo se eu fizer logoff. No entanto, se minha sessão for interrompida (por exemplo, por meio de uma desconexão de rede) WHILST, a cauda ainda está em execução, então o Tomcat também para. Se eu tivesse CTRL-C'ed a cauda, então o Tomcat não vai parar até que eu opte por matá-lo.

Eu não estou interessado em manter a cauda viva em uma desconexão de rede, eu só quero que o Tomcat continue funcionando independentemente.

Eu não consigo entender esse comportamento. Alguém pode por favor explicar isso? Além disso, como eu poderia mudar o script para que o Tomcat continuasse a rodar mesmo se a rede fosse desconectada?

    
por Phil 17.07.2015 / 15:40

1 resposta

0

Quando você chama um script de outro script, ele é executado em segundo plano (caso contrário, você teria dois scripts sendo executados simultaneamente em primeiro plano, ambos tentando exibir na tela)

Quando você pressiona Ctrl-C, está enviando um sinal de interrupção para o seu script (não apenas para a cauda), mas o script tomcat continua a ser executado em segundo plano, pois é um script separado.

Quando sua sessão termina, todos os scripts em execução são encerrados, incluindo aqueles executados em segundo plano.

Se quiser que os scripts continuem sendo executados quando você se desconectar da rede (intencionalmente ou não), recomendo o tmux ou a tela.

    
por 17.07.2015 / 15:48

Tags