Am o aplicație java cu 4 procese care rulează (pe Ubuntu 20.04LTS), refă imaginea de mai jos. Serviciul 1 începe înainte de 2+, serviciul 2 ar începe, de asemenea, serviciul 3 și 4.
Am configurat 1 și 2 ca fiind simple și funcționează.
dependențe de servicii, serviciul 2 pornind serviciul 3 și 4
Cu toate acestea, serviciile 3 și 4 pot fi oprite/repornite independent de serviciul 2. Există o modalitate de a implementa acest lucru în definiția serviciului app-service4.service?
M-am uitat la articol de blog care descrie un caz similar, deci pe baza asta, cred că definirea serviciului 3 și 4 cu serviciul 2 „PartOf” poate fi o modalitate, dar cum să facem ca serviciul 3 și 4 să înțeleagă că a fost deja pornit de serviciul 2?
Mai jos este service2.service
[Unitate]
Descriere = Serviciu 2
După=service1.service
[Serviciu]
ExecStart=/usr/local/bin/service2.sh start
ExecStop=/usr/local/bin/service2.sh stop
[Instalare]
WantedBy=default.target
După pornire, starea serviciului arată un CGroup ca mai jos (pid și nume etc simplificate)
/system.slice/service2.service
|- 123 /bin/sh /usr/local/bin/service2.sh start
|- 124 java service2
|- 125 java service3
|- 126 java service4
Deci, cum adaug un service3.service care mi-ar permite să dezactiv/repornesc service3 fără a termina service2? Mai jos este încercarea mea, care nu poate înțelege că service2 rulează deja.
[Unitate]
Descriere = Serviciu 3
PartOf=service2.service
[Serviciu]
ExecStart=/usr/local/bin/service3.sh start
ExecStop=/usr/local/bin/service3.sh stop
[Instalare]
WantedBy=default.target
Cu această configurare după ce service2 este pornit, „systemctl status service2” arată procesele service2-servic4 așa cum s-a menționat mai sus, iar „systemctl status service 3” apare ca „inactiv (mort)”. O încercare de a porni serviciul 3 (systemctl start service3) sfârșește prin a opri același lucru (deoarece rula deja, comanda de pornire se termină după care este executată comanda de oprire). Dacă încerc din nou pornirea, va porni ca un serviciu separat .
Aș dori ca demonul să înțeleagă că procesul sub service-2 este de fapt service-3, prin urmare service-3 ar apărea ca rulând. Este posibil?
Dacă nu - există vreo soluție pentru a permite gestionarea separată a serviciilor?