Ubuntu: Tomcat-Upstart-Skript. Protokolle landen im Upstart-Protokoll

Ubuntu: Tomcat-Upstart-Skript. Protokolle landen im Upstart-Protokoll

Ich habe ein einfaches Upstart-Skript für Tomcat. Hier ist die Chef-Vorlage:

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

Nach dem Wechsel vom Init-Skript zum oben geposteten Upstart-Skript werden alle Tomcat-Protokolle in /var/log/upstart/tomcat geschrieben. Gibt es einen Grund, warum alle Protokolle in das Upstart-Protokoll gehen? Wie kann man das am besten umgehen? Dies ist auf Ubuntu 12.04

Antwort1

DerEmporkömmling Kochbuchliefert eine Erklärung dafür, was vor sich geht. Kurz gesagt: „Standardausgabe und Standardfehler werden ... automatisch in eine Datei im Verzeichnis /var/log/upstart/ protokolliert“. Der Befehl „catalina.sh run“ sendet die gesamte Ausgabe an stdout. Upstart leitet also stdout an das Upstart-Protokoll um.

Ich bin folgendermaßen an das Problem herangegangen:

# 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

Ich habe versucht, „catalina.sh start“ auszuführen, was, wenn man sich das Catalina-Skript ansieht, die Ausgabe an CATALINA_OUT selbst umleitet. Aber ich konnte Upstart nicht dazu bringen, den Prozess richtig zu verwalten. Weder „expect fork“ noch „expect daemon“ konnten den Hintergrundprozess verwalten, der vom Catalina-Startskript erstellt wurde.

verwandte Informationen