Unix / Linux - ไฟล์หน่วยบริการไม่สามารถจดจำชุดตัวแปร env ใน / etc / environment


1

ฉันมีการตั้งค่าตัวแปรสภาพแวดล้อมอย่างถูกต้องสิ่งต่อไปนี้ /etc/environment

ฉันมั่นใจว่าโหลดได้อย่างถูกต้องผ่าน/etc/profileการแก้ไข และฉันสามารถสะท้อนเพื่อยืนยัน

แต่เมื่อฉันสร้างไฟล์หน่วยสำหรับบริการของฉันมันล้มเหลวเพราะตัวแปรสภาพแวดล้อมหายไป อย่างไรก็ตามฉันสามารถเริ่มสคริปต์ด้วยตัวเองตามปกติ

นี่คือไฟล์หน่วยบริการของฉัน:

[Unit]
Description=Zookeeper unit for this machine
AssertPathExists=/opt/kafka
[Service]
Type=simple
ExecStart=/opt/kafka/bin/zookeeper-server-start.sh /opt/kafka/config/zookeeper.properties
ExecStop=/opt/kafka/bin/zookeeper-server-stop.sh

แสดง journalctl ที่javaไม่พบ - แต่มีจาวาผ่านเส้นทาง $ JAVA_HOME ซึ่งพบได้ง่ายเมื่อฉันเริ่มต้นโดยตรงจากทุบตี

ฉันไม่ใช่ผู้ใช้ที่เป็นผู้ดูแลระบบ :) ดังนั้นความผิดพลาดที่โง่ ๆ อาจเกิดขึ้นที่นี่ กรุณามีคนแนะนำ ฉันควรจะเพิ่มในไฟล์ system.conf และโหลด daemon ใหม่หรือไม่

ความนับถือ,


1
มีเหตุผลที่คุณไม่ต้องการใช้Environmentและ / หรือEnvironmentFile?
Ignacio Vazquez-Abrams

@ IgnacioVazquez-Abrams ใช่ - เพราะฉันเป็นผู้ใช้ Windows เป็นหลักและเปรียบเทียบกับคุณอย่างเต็มที่ :)
hagubear

คำตอบ:


4

ด้วย Systemd คุณจะต้องเรียกไฟล์อย่างชัดเจนด้วยการประกาศตัวแปรสภาพแวดล้อม ตัวอย่างเช่น:

[Service]
EnvironmentFile=-/etc/environment

"-" บนบรรทัด EnvironmentFile = ช่วยให้มั่นใจได้ว่าจะไม่มีการสร้างข้อความแสดงข้อผิดพลาดหากไม่มีไฟล์สภาพแวดล้อม เนื่องจากไฟล์เหล่านี้หลายไฟล์เป็นทางเลือกใน sysvinit คุณควรรวม "-" เมื่อใช้คำสั่งนี้

นอกจากนี้ยังเป็นที่น่าสังเกตว่าโดยทั่วไปมีสามวิธีในการบรรลุสิ่งที่คุณต้องการ:

  1. ดังกล่าวข้างต้นให้กำหนดตัวแปรในไฟล์ (เช่น / etc / environment) และอ้างอิงไฟล์นั้นต่อหน่วยด้วย EnvironmentFile=
  2. ตัวแปรสภาพแวดล้อมการอ้างอิงที่ถูกต้องในไฟล์แต่ละไฟล์ด้วย Environment=
  3. ใส่การกำหนดDefaultEnvironmentตัวแปรในตัวแปรใน /etc/systemd/system.conf หรือตัวอย่างใน /etc/systemd/system.conf.d/some-file

ตรวจสอบคำแนะนำ Fedora ในเรื่องโดยเฉพาะอย่างยิ่งส่วน EnrionmentFile


ขอบคุณตลกพอ - อย่างใดอ่านก่อนนอนของฉันไม่ได้ครอบคลุมนี้ - digitalocean.com/community/tutorials/... ฉันจะพยายามปิดบังลิงก์ของ Fedora ที่คุณส่งมาให้ฉัน
hagubear

@hagubear: systemd.*(5,7)man pagesก็มีประโยชน์เช่นกันถ้าแห้งไปหน่อย
Ignacio Vazquez-Abrams

@hagubear แบบฝึกหัด Digital Ocean ยอดเยี่ยม - สามารถอ่านได้และมักจะมีอำนาจในเรื่องของพวกเขา - แต่โปรดจำไว้ว่าพวกเขาเขียนโดยชุมชนซึ่งหมายความว่าทุกคนสามารถเขียนได้ดังนั้นจึงควรเสริมด้วยการวิจัยของคุณเอง หากคุณพบว่าคำตอบของฉันตอบคำถามของคุณโปรดทำเครื่องหมายเป็นเช่นนั้นและคุณจะเข้าร่วมในชุมชน Superuser :)
baelx
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.