ฉันไม่สามารถหาวิธีผนวกเส้นทางเริ่มต้นในการกำหนดค่าโปรแกรม supervisord
ฉันสามารถรีเซ็ตเส้นทาง:
environment=PATH="/home/site/environments/master/bin"
แต่เมื่อฉันลอง:
environment=PATH="/home/site/environments/master/bin:$PATH"
ฉันเห็น supervisord $PATH
ที่ไม่ได้ประเมิน
Google ไม่ได้ช่วยอะไรมากในเรื่องนี้ด้วยเหตุผลบางอย่างฉันไม่อยากจะเชื่อเลยว่าฉันเป็นคนแรกที่ต้องการสิ่งนี้
Supervisord จะต้องสนับสนุนสิ่งนี้ความคิดใด ๆ
1
@ascobol ไม่ฉันได้ hardcoded เส้นทางที่ฉันต้องการสำหรับตอนนี้
—
Prody
supervisord
อย่าเรียกใช้เชลล์เพื่อประมวลผลตัวแปรล่วงหน้าในไฟล์กำหนดค่าดังนั้นคุณจึงไม่สามารถใช้เชลล์นิพจน์เพื่อขยายตัวแปรได้ แม้ว่าจะมีแพทช์ที่อนุญาตให้ทำ%($PATH)
และมันถูกกล่าวถึงในรายชื่อผู้รับจดหมายในปี 2011 แต่ AFAIK มันยังไม่รวมอยู่ในแผนผังแหล่งข้อมูลการฉีด คุณสามารถสร้างสคริปต์ที่จะตั้งค่าสภาพแวดล้อมและดำเนินการคำสั่งที่มีให้ในอาร์กิวเมนต์ จากนั้นคุณก็เรียกใช้สคริปต์จากสิ่งที่supervisord
ชอบcommand /usr/local/bin/setup_env_master.sh program_name arguments
มีข้อเสียเปรียบที่สำคัญในการแก้ปัญหา shell wrapper - เมื่อหัวหน้างานจะพยายามหยุดกระบวนการโดยใช้ INT หรือ KILL สัญญาณจะถูกรับโดยสคริปต์ทุบตีไม่ใช่โปรแกรมที่ถูกห่อจริง สิ่งนี้อาจนำไปสู่ (และนำไปสู่ในกรณีของฉัน) ไปยังกระบวนการที่ห้อยต่องแต่ง
—
stoiczek
@ stoiczek ปัญหาง่ายต่อการแก้ ใช้ exec เมื่อสิ้นสุดสคริปต์ทุบตีอย่าเพิ่งรันคำสั่งเป็นประจำ
—
CameronNemo
exec server --args
ดังนั้น คุณเห็นมันในงานพุ่งพรวดอย่างสม่ำเสมอ