/ Usr / bin / env komutunun sistemd günlüklerinde yürütülebilir olarak işaretlenmesi nasıl önlenir


15

Bu makalede bulunan bilgilere dayanarak bir tomcat uygulaması çalıştırmak için bir systemd hizmeti oluşturdum . Makalenin kısa sürümü, kabuk komut dosyası sarmalayıcılarından kaçınmayı ve uygun ortam ve komut satırı ile doğrudan java çalıştırılmasını önerir.

İşte systemd hizmetinin tamamı (uygulama adı değiştirilmiş olarak):

[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

Bu bildiğim kadarıyla iyi çalışıyor. Hizmet, durumu doğru bir şekilde başlatır, durdurur ve raporlar. Ben yaşıyorum sorun tarafından rapor günlükleri ile 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Çalışan yürütülebilir olarak günlüğe kaydedilen buraya bakın . javaAslında önem verdiğimiz program olduğunu göz önünde bulundurarak yürütülebilir olarak görmeyi tercih ederim . envGürültüdür. Start komutunu önekle tavsiye eden birkaç farklı systemd servis dosyasını fark ettim /usr/bin/env, bu yüzden üretilen günlükler hakkında bazı bilgiler bulabileceğimi varsaydım. Görünüşe göre öyle değil.

Yürütülebilir java doğrudan yürütme aynı desen (değil, startup.sh sarmalayıcılar) kullanmak javayerine yürütülebilir bildirebilir miyim env?

Ekstra puan için, servis dosyamın eksik olabileceği konusunda bazı ipuçları ve ipuçları isterim. İlk kez bir systemd hizmeti yazdım ve en iyi uygulamalar hakkında daha fazla bilgi edinmek istiyorum.

Yanıtlar:


16

SyslogIdentifier yönergesi günlüklerinde yürütülebilir ismin adı ayarlayabilirsiniz.

SyslogIdentifier=java
# or my app name, but not both!
SyslogIdentifier=myapp
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.