
Eu tenho um script inicial simples para o Tomcat. Aqui está o modelo do chef:
description "Tomcat Server"
start on runlevel [2345]
stop on runlevel [!2345]
respawn
respawn limit 10 5
# run as non privileged user
# add user with this command:
## adduser --system --ingroup www-data --home /opt/apache-tomcat apache-tomcat
setuid "<%= node['tomcat']['user'] %>"
setgid "<%= node['tomcat']['group'] %>"
# paths:
env JAVA_HOME="<%= node["java"]["home"] %>"
env CATALINA_BASE="<%= node["tomcat"]["base"] %>"
env CATALINA_HOME="<%= node["tomcat"]["home"] %>/current"
exec $CATALINA_HOME/bin/catalina.sh run
# cleanup temp directory after stop
post-stop script
rm -rf $CATALINA_HOME/temp/*
end script
Depois de mudar do script init para o script upstart postado acima, todos os logs do Tomcat são gravados em /var/log/upstart/tomcat. Existe alguma razão pela qual todos os logs vão para o log inicial? Qual é uma boa maneira de contornar isso? Isso está no Ubuntu 12.04
Responder1
Olivro de receitas iniciantefornece uma explicação para o que está acontecendo. Resumindo, "A saída padrão e o 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 do upstart.
Adotei 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
Tentei executar 'catalina.sh start', que se você olhar o script catalina redireciona a saída para o próprio CATALINA_OUT. Porém, não consegui que o upstart gerenciasse corretamente o processo. Nem 'expect fork' nem 'expect daemon' foram capazes de gerenciar o processo em segundo plano criado a partir do script de inicialização catalina.