Puncte:0

Cum să gestionați un sistem threaded, dar independent

drapel in

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?

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.