ฉันมีบริการรันไทม์สองบริการที่ทำงานบนเครื่องลินุกซ์ของฉัน ฉันได้ตั้งค่าเพื่อให้ apt-get update และ apt-get upgrade อัปเดตบริการ ในกรณีที่ฉันได้อัปเดตเป็นอย่างใดอย่างหนึ่ง
ตอนนี้ปัญหาของฉันคือ A.service ทำการเรียก API ไปยัง B.service ระหว่างการเริ่มต้นเพื่อดึงข้อมูลระบบ (A.service ทำสิ่งต่างๆ B.service ดึงข้อมูลและเปิดเผยข้อมูลในรูปแบบของ API สำหรับ A.service)
หลังจากอัปเดต ฉันต้องรีสตาร์ททั้งสองบริการ โดยเรียกใช้ 'sudo systemctl restart A.service B.service' ขณะนี้ A.service ไม่สามารถเริ่มต้นได้เนื่องจาก B.Service ยังไม่ทำงาน
ไฟล์การกำหนดค่า A.service:
[หน่วย]
คำอธิบาย=A.service
After=B.service
ต้องการ = B.บริการ
[บริการ]
พิมพ์=แจ้ง
NotifyAccess=ทั้งหมด
ExecStart=/usr/bin/a_service
ไฟล์การกำหนดค่า B.service:
[หน่วย]
Description=B.บริการ
ก่อน=A.service
[บริการ]
พิมพ์=แจ้ง
NotifyAccess=ทั้งหมด
ExecStart=/usr/bin/b_service
ตามความเข้าใจของฉัน 'หลังจาก' และ 'ก่อน' ควรกำหนดลำดับการเริ่มต้น วิธีนี้ใช้ได้ดีเมื่อรีบูตเครื่อง แต่ฉันต้องทำให้มันใช้งานได้ด้วยการรีสตาร์ทด้วย เพราะการรีบูตเครื่องทุกครั้งหลังการอัปเดตไม่สามารถทำได้
ผลลัพธ์ที่ต้องการ:
$ sudo systemctl รีสตาร์ท A.service B.service
...
เริ่ม B.service
เริ่ม ก.บริการ
...
มีวิธีใดบ้างที่จะบรรลุเป้าหมายนี้? ขณะนี้เมื่อดำเนินการ 'systemctl รีสตาร์ท A.service B.service A จะเริ่มก่อน B และออกด้วยความล้มเหลว