Ubuntu: script de inicio de Tomcat. Los registros terminan en el registro advenedizo

Ubuntu: script de inicio de Tomcat. Los registros terminan en el registro advenedizo

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.

información relacionada