小编Jos*_*ton的帖子

如何避免在 systemd 日志中将 /usr/bin/env 标记为可执行文件

我已经根据本文中的信息创建了一个 systemd 服务来运行 tomcat 应用程序。这篇文章的简短版本建议避免使用 shell 脚本包装器,并使用适当的环境和命令行直接执行 java。

这是整个 systemd 服务(替换了应用程序名称):

[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
Run Code Online (Sandbox Code Playgroud)

据我所知,这很有效。服务正确启动、停止和报告状态。我遇到的问题是由journalctl以下人员报告的日志:

# journalctl -u myapp.service --since today

Sep 14 00:26:00 myserver.domain.com env[654]: MyApp:2015-09-14 00:26:00: …
Run Code Online (Sandbox Code Playgroud)

systemd tomcat systemd-journald

15
推荐指数
1
解决办法
3947
查看次数

标签 统计

systemd ×1

systemd-journald ×1

tomcat ×1