
Tengo un script de inicio simple para Tomcat. Aquí está la plantilla del 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
Después de cambiar del script de inicio al script de inicio publicado anteriormente, todos los registros de Tomcat se escriben en /var/log/upstart/tomcat. ¿Hay alguna razón por la cual todos los registros van al registro advenedizo? ¿Cuál es una buena manera de solucionar eso? Esto es en ubuntu 12.04
Respuesta1
Ellibro de cocina advenedizoproporciona una explicación de lo que está pasando. En resumen, "La salida estándar y el error estándar... se registran automáticamente en un archivo en el directorio /var/log/upstart/". El comando 'catalina.sh run' envía todos los resultados a la salida estándar. Entonces, el advenedizo está redirigiendo la salida estándar al registro advenedizo.
Tomé el siguiente enfoque para el 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
Intenté ejecutar 'catalina.sh start', que si miras el script de catalina redirige la salida al propio CATALINA_OUT. Pero no pude hacer que el advenedizo administrara correctamente el proceso. Ni 'expect fork' ni 'expect daemon' pudieron administrar el proceso en segundo plano creado a partir del script de inicio de catalina.