ฉันกำลังดำเนินการย้ายสคริปต์เริ่มต้นที่กำหนดเองทั้งหมดไปยัง systemd ฉันเจอสคริปต์ที่ใช้บริการหลายอย่าง ฉันไม่สามารถหาไวยากรณ์ที่เหมาะสมเพื่อจัดการสิ่งนี้ได้ หรือหากฉันต้องการสร้างแยกต่างหาก .บริการ
ไฟล์หน่วยสำหรับแต่ละไฟล์ สิ่งนี้เป็นไปได้สำหรับการสร้างเทมเพลตหรือไม่ เดอะ เอกสารประกอบหน่วย SystemD ไม่ได้ให้ข้อมูลอะไรกับฉันมากนัก ยกเว้นวิธีสร้างไฟล์เทมเพลต (ต่อท้าย @
ถึงชื่อ) และวิธีการใช้งาน %ผม
เพื่อแสดงถึงตัวอย่าง
ต้นตำรับพุ่งพรวด ตัวแทนจำหน่าย-start-all.conf
บันทึกคอนโซล
เริ่มต้นที่ตัวแทนจำหน่ายเริ่มต้น
สคริปต์
ประกาศ -a ตัวแทนจำหน่าย = ("เขตเวลา" "หมดเวลา" "สอบถาม" "ปฏิเสธ")
สำหรับพิมพ์ "${dealers[@]}"
ทำ
ถ้ารายการ initctl | grep "^dealer (ประเภท $)"
แล้ว
หยุดตัวแทนจำหน่าย type=$type
ไฟ
เริ่มต้นดีลเลอร์ type=$type
echo "dealer$type เริ่มแล้ว"
เสร็จแล้ว
สคริปต์สิ้นสุด
ส่วนอื่นของมัน ตัวแทนจำหน่าย.conf
, ควรหั่นให้สวยและแห้งโดยใช้ %ผม
ใน ExecStart
ส่วนเช่น:
ExecStart=/usr/bin/php -f /path/to/dealer%i.php
บันทึกคอนโซล
ตัวอย่าง $type
หยุดที่ตัวแทนจำหน่ายหยุด
สคริปต์
sudo -u root php -f /path/to/dealer$type.php
สคริปต์สิ้นสุด
สคริปต์หลังหยุด
ถ้า [ -z "$UPSTART_STOP_EVENTS" ]
แล้ว
echo "dealer$type หยุดที่ `วันที่ +"%F %T.%N"` เรียกใช้ 'initctl emit Dealer-stop' จากนั้น 'initctl emit Dealer-Start' ใน `ชื่อโฮสต์` เพื่อให้กลับมาทำงานอีกครั้ง" | เมล -s "dealer$type หยุดทำงาน" [email protected]
อื่น
echo "dealer$type ถูกหยุดด้วยตนเองเมื่อ `วันที่ +"%F %T"`"
ไฟ
สคริปต์สิ้นสุด
ฉันไม่เข้าใจวิธีแปลอาร์เรย์ในอันแรกเป็นเวอร์ชัน systemd ฉันควรแบ่งไฟล์เหล่านี้ออกเป็นไฟล์หน่วยแต่ละไฟล์หรือไม่ ถ้าเป็นเช่นนั้น นั่นไม่ใช่ปัญหาและสามารถทำได้โดยง่าย ฉันแค่ไม่แน่ใจในไวยากรณ์ (ถ้ามี) เพื่อทำในสิ่งที่อันแรกกำลังทำอยู่