วิธีหลีกเลี่ยง / usr / bin / env ถูกทำเครื่องหมายใน systemd ล็อกเป็นไฟล์เรียกทำงาน


15

ฉันได้สร้างบริการ systemd เรียกใช้โปรแกรมประยุกต์คราวบนพื้นฐานของข้อมูลที่พบในบทความนี้ บทความฉบับย่อแนะนำให้หลีกเลี่ยงเชลล์สคริปต์แรปเปอร์และเรียกใช้จาวาโดยตรงด้วยสภาพแวดล้อมและบรรทัดคำสั่งที่เหมาะสม

นี่คือบริการทั้งหมดของ 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

มันใช้งานได้ดีเท่าที่ฉันรู้ บริการเริ่มหยุดและรายงานสถานะอย่างถูกต้อง ปัญหาที่ฉันมีอยู่กับบันทึกตามที่รายงานโดย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สัญญาณรบกวน ฉันสังเกตเห็นไฟล์เซอร์วิส systemd ที่แตกต่างกันเล็กน้อยที่แนะนำคำนำหน้าคำสั่งเริ่มต้นด้วย/usr/bin/envดังนั้นฉันคิดว่าฉันอาจสามารถค้นหาข้อมูลบางอย่างเกี่ยวกับบันทึกที่สร้างขึ้น ชัดเจนว่าไม่.

ฉันสามารถรายงานความสามารถในการเรียกใช้งานjavaแทนที่จะenvใช้รูปแบบเดียวกันนี้ของการเรียกใช้งานจาวาโดยตรง (ไม่ใช่โปรแกรมเสริมของ startup.sh)?

สำหรับคะแนนพิเศษฉันจะรักคำแนะนำและเคล็ดลับเกี่ยวกับไฟล์บริการของฉันที่อาจหายไป นี่เป็นครั้งแรกที่ฉันได้เขียนบริการ systemd และกระตือรือร้นที่จะเรียนรู้เพิ่มเติมเกี่ยวกับแนวทางปฏิบัติที่ดีที่สุด

คำตอบ:


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.