1

У меня есть простой сценарий выскочки для Tomcat. Вот шаблон шеф-повара:

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

После переключения с сценария инициализации на сценарий запуска, опубликованный выше, все журналы tomcat записываются в /var /log /upstart /tomcat. Есть ли причина, по которой все журналы попадают в журнал выскочек? Какой хороший способ обойти это? Это на Ubuntu 12.04

1 ответ1

2

В готовой кулинарной книге объясняется, что происходит. Короче говоря, «Стандартный вывод и стандартная ошибка ... автоматически регистрируются в файле в каталоге /var /log /upstart /». Команда catalina.sh run отправляет весь вывод на стандартный вывод. Итак, upstart перенаправляет стандартный вывод в журнал upstart.

Я выбрал следующий подход к проблеме:

# 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

Я попытался выполнить 'catalina.sh start', который, если вы посмотрите на скрипт catalina, перенаправляет вывод в сам CATALINA_OUT. Но мне не удалось выскочки правильно управлять процессом. Ни «ожидаем вилка», ни «ожидаем демон» не удалось управлять фоновым процессом, созданным из сценария запуска catalina.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .