Am două servicii runtime care rulează pe mașina mea Linux. L-am configurat astfel încât apt-get update și apt-get upgrade să actualizeze serviciile, în cazul în care am împins o actualizare la oricare dintre ele.
Acum problema mea este că A.service efectuează un apel API către B.service în timpul inițializării pentru a prelua informații despre sistem. (A.service face lucruri, B.service preia informații și expune informațiile sub forma unui API pentru A.service).
După actualizare, trebuie să repornesc ambele servicii, pentru a face acest lucru execut 'sudo systemctl restart A.service B.service'. Acum A.service nu reușește să se inițialeze deoarece B.Service nu rulează încă.
A.fișier de configurare a serviciului:
[Unitate]
Descriere=A.service
După=B.serviciu
Necesită=B.serviciu
[Serviciu]
Tip = notificare
NotifyAccess=toate
ExecStart=/usr/bin/a_service
B.fișierul de configurare a serviciului:
[Unitate]
Descriere=B.service
Înainte=A.service
[Serviciu]
Tip = notificare
NotifyAccess=toate
ExecStart=/usr/bin/b_service
După înțelegerea mea, „După” și „Înainte” ar trebui să definească ordinea de pornire. Acest lucru funcționează bine la repornirea mașinii, dar trebuie să fac acest lucru să funcționeze și cu repornirea, deoarece repornirea după fiecare actualizare nu este fezabilă.
Rezultatul dorit:
$ sudo systemctl restart A.service B.service
...
A început B.service
A început A.service
...
Există vreo modalitate de a realiza acest lucru? În prezent, când se execută „systemctl restart A.service B.service, A va începe înaintea lui B și, prin urmare, va ieși cu o eroare.