tail -f faz tomcat morrer

0

Nós temos um arquivo de construção que faz um checkout git, compila uma guerra, implementa no tomcat e depois segue o catalina.log. Se a sessão ssh sobre a qual isso é feito de alguma forma for interrompida, mesmo que estejamos apenas seguindo o log, toda a instância do tomcat irá morrer. Obviamente, isso não é o ideal, mas gostaria de saber por que isso está acontecendo e como corrigi-lo.

Acontece no Gentoo & Ubuntu (ou seja, os dois que eu testei isso)

    
por Noxville 17.01.2012 / 11:31

1 resposta

1

Não execute daemons a partir de um shell interativo conectado a um terminal.

Configure os daemons para serem executados propriamente , gerenciados por qualquer supervisor do (s) daemon com o qual seu sistema venha, seja qualquer coisa de s6-supervise para launchd . Use a interface de gerenciamento para trazer os daemons para cima e para baixo.

Quando sua conexão SSH é perdida, o processo do servidor SSH fecha o lado mestre do pseudo-terminal que é aberto. Isso faz com que um SIGHUP seja enviado para o processo de líder de sessão, o shell de nível superior e para todos os processos no grupo de processos de primeiro plano. Quando bash recebe um SIGHUP , ele envia SIGHUP para todos os processos filhos aos quais ele não foi informado para disown . Isso, claro, inclui o processo tomcat que você executou desse shell interativo.

Os deemons não devem ter controle de TTY, e não devem pertencer a nenhum grupo de processos ou sessão que seja conhecido por qualquer TTY, para que os usuários não privilegiados possam enviar sinais aleatórios e possivelmente inesperados. Executá-los a partir do (s) supervisor (es) daemon do seu sistema irá assegurar que isto, e na verdade todos os outros aspectos do estado do processo do daemon, são todos apropriadamente definidos para um processo de daemon. Muitos supervisores de daemon também irão lidar automaticamente com o registro do daemon.

Execute o seu tomcat daemon corretamente.

Leitura adicional

  • Jonathan de Boyne Pollard (2001,2007). Erros a evitar ao projetar programas do programa Unix . Respostas frequentemente dadas.
por 17.01.2012 / 16:56