Як уникнути позначення / usr / bin / env у системних журналах як виконуваний файл


15

Я створив системну службу для запуску програми tomcat на основі інформації, знайденої в цій статті . Коротка версія статті рекомендує уникати обгортки сценарію оболонки та виконувати java безпосередньо, за допомогою відповідного середовища та командного рядка.

Ось вся система системної служби (із заміненою назвою програми):

[Unit]
Description=MyApp Tomcat Container

[Service]
EnvironmentFile=/opt/myapp/environment
ExecStart=/usr/bin/env ${JAVA_HOME}/bin/java $JAVA_OPTS $CATALINA_OPTS \
-classpath ${CLASSPATH} \
-Dcatalina.base=${CATALINA_BASE} \
-Dcatalina.home=${CATALINA_HOME} \
-Djava.endorsed.dirs=${JAVA_ENDORSED_DIRS} \
-Djava.io.tmpdir=${CATALINA_TMPDIR} \
-Djava.util.logging.config.file=${CATALINA_BASE}/conf/logging.properties \
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager \
org.apache.catalina.startup.Bootstrap start

ExecStop=/usr/bin/env $JAVA_HOME/bin/java $JAVA_OPTS \
-classpath $CLASSPATH \
-Dcatalina.base=$CATALINA_BASE \
-Dcatalina.home=$CATALINA_HOME \
-Djava.endorsed.dirs=$JAVA_ENDORSED_DIRS \
-Djava.io.tmpdir=$CATALINA_TMPDIR \
-Djava.util.logging.config.file=$CATALINA_BASE/conf/logging.properties \
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager \
org.apache.catalina.startup.Bootstrap stop

[Install]
WantedBy=multi-user.target

Наскільки я знаю, це працює досить добре. Служба запускається, зупиняється та повідомляє про стан правильно. Проблема, яка виникає у мене, полягає в тому, що з журналами повідомляється journalctl:

# journalctl -u myapp.service --since today

Sep 14 00:26:00 myserver.domain.com env[654]: MyApp:2015-09-14 00:26:00: INFO Detail irrelevant
Sep 14 00:26:00 myserver.domain.com env[654]: MyApp:2015-09-14 00:26:00: INFO Detail irrelevant
Sep 14 00:26:17 myserver.domain.com env[654]: MyApp:2015-09-14 00:26:17: INFO Detail irrelevant

Дивіться тут, envщо реєструється як запущений виконуваний файл. Я б швидше javaвважав виконуваним, враховуючи, що це програма, яка насправді нас хвилює. envШум. Я помітив досить багато різних системних файлів обслуговування, які рекомендують префіксувати команду start /usr/bin/env, тому я припустив, що я можу знайти деяку інформацію про створені журнали. Мабуть, ні.

Чи можу я звітувати про виконуваний файл, javaа не envвикористовувати цей самий зразок виконання Java безпосередньо (а не обгортки startup.sh)?

Для додаткових балів я хотів би отримати кілька підказок та порад про те, що мій файл служби може бути відсутнім. Це перший раз, коли я написав системну службу, і хочу дізнатися більше про кращі практики.

Відповіді:


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.