O livro de receitas do upstart fornece uma explicação para o que está acontecendo. Resumidamente, "Saída padrão e erro padrão são ... registrados automaticamente em um arquivo no diretório / var / log / upstart /". O comando 'catalina.sh run' envia todas as saídas para stdout. Portanto, o upstart está redirecionando o stdout para o log de inicialização.
Eu usei a seguinte abordagem para o problema:
# Manually specify CATALINA_OUT, so we can redirect ourselves
env CATALINA_OUT=<path to catalina_base>/logs/catalina.out
# Stop upstart from handling stdout/stderr & redirect to the log file ourselves
console none
exec $CATALINA_HOME/bin/catalina.sh run >> "$CATALINA_OUT" 2>&1
Eu tentei executar 'catalina.sh start', que, se você olhar o script catalina, redireciona a saída para CATALINA_OUT em si. Mas, não consegui arranjar corretamente o processo. Nem o 'expect fork' nem o 'expect daemon' foram capazes de gerenciar o processo em segundo plano criado a partir do script de inicialização do catalina.