ตามเอกสาร systemd ฉันควรใช้ สิ่งแวดล้อม=
, แต่ฉัน
ฉันไม่แน่ใจว่าจะทำอย่างไร สมมติว่าฉันมีไฟล์ systemd unit
เรียกว่า ทดสอบ systemd-params.service
:
นี่คือตัวอย่างการใช้ สิ่งแวดล้อม=
คำอธิบาย=การทดสอบพารามิเตอร์ระบบ
ต้องการ=network-online.target
After=network-online.target
[บริการ]
สภาพแวดล้อม = "MOD = foo" "REM = บาร์"
ExecStart=/usr/bin/php -f /path/to/test_systemd.php --mod ${MOD} --rem ${REM}
StandardOutput=file:/var/log/test-multiple-systemd.log
[ติดตั้ง]
#สตาร์ทหลังบูท
WantedBy=multi-user.target
นี่ไม่ใช่สิ่งที่คุณกำลังมองหาเพราะตัวแปรเป็นค่าคงที่
ฉันพบ นี้ ตัวอย่างและมีสอง สิ่งแวดล้อม
เส้น แต่หนึ่งในนั้นเป็นค่าคงที่! ฉันต้องการ สอง ค่าไดนามิก เช่น:
ตัวอย่างข้อมูลโค้ดที่คุณอ้างถึง แม่แบบบริการ. คุณสามารถผ่าน ตัวแปรเดียวเท่านั้น ทางนี้. เป็นไปได้ที่บริการ systemd จะใช้อาร์กิวเมนต์เดียวผ่านไวยากรณ์ "[email protected]"
นี่คือตัวอย่างการใช้งาน
คำอธิบาย=การทดสอบพารามิเตอร์ระบบ
ต้องการ=network-online.target
After=network-online.target
[บริการ]
สภาพแวดล้อม = MOD = %i
สภาพแวดล้อม = REM = บาร์
ExecStart=/usr/bin/php -f /path/to/test_systemd.php --mod ${MOD} --rem ${REM}
StandardOutput=file:/var/log/test-multiple-systemd.log
[ติดตั้ง]
#สตาร์ทหลังบูท
WantedBy=multi-user.target
จากนั้นคุณเริ่มบริการดังนี้:
systemctl เริ่มการทดสอบ [email protected]
systemctl เริ่มการทดสอบ [email protected]
มันจึงยังไม่ใช่สิ่งที่คุณกำลังมองหา เพราะคุณยังมีตัวแปรสแตติกอยู่หนึ่งตัว
วิธีเดียวที่ฉันเห็น (ไม่ได้ทดสอบ) ในการส่งผ่านตัวแปรหลายตัวจะใช้ ไฟล์สิ่งแวดล้อม=
คำสั่งและไฟล์ปรับแต่งที่คั่นด้วย พลวัต ชื่อโดยใช้ @การโต้แย้ง
ไวยากรณ์
[บริการ]
EnvironmentFile=/path/to/config/%i
ExecStart=/usr/bin/php -f /path/to/test_systemd.php --mod ${MOD} --rem ${REM}
StandardOutput=file:/var/log/test-multiple-systemd.log
ตัวอย่างไฟล์คอนฟิกใน /เส้นทาง/to/config/
สมมุติว่า คอนเฟิร์ม1
:
MOD=ฟู
REM = บาร์
จากนั้นคุณเริ่มบริการดังนี้:
systemctl เริ่มการทดสอบ [email protected]
systemctl เริ่มการทดสอบ [email protected]
...