
BG Development · За реклама · За контакти |
![]() ![]() ![]() ![]() ![]() |
Здравей! ( Включване | Регистриране ) |
![]() ![]() ![]() |
relax4o |
Публикувано на: 08-08-2023, 08:40
|
||||||||||||
![]() Име: Група: Потребител Ранг: Почетен член Мнения: 2730 Регистриран на: 04.04.07 ![]() |
Здравейте, Имам следният казус: създал съм един консуматор на съобщения (брокера е RabbitMQ), които изпълнявам чрез Симфони команда. Тези консуматори ще се изпълняват дълготрайно и изпълнението им трябва да става автоматично. За целта съм създал systemd unit файл, който е темплейтен unit в случай, че на по-късен етап искам да стартирам по няколко инстанции на един и същ консуматор. Дотук всичко добре, но също създадох и target файл, който да обхваща всички workers за този консуматор, за да мога лесно да ги управлявам на куп. Като допълнение обаче съм създал и още един target файл, който пък ще обхваща всички target файлове за отделните консуматори, които ще дойдат по-късно, и с който ще искам да стартирам абсолютно всички workers. Йерархията, към която се целя е следната
А файловете изглеждат по следния начин all.workers.target - този таргет реално е enabled, за да може при reboot да стартира всички под него.
consumer1.workers.target
consumer1.worker@.service
Когато увеличавам Wants директивите, за да добавям нови инстанции всичко е наред, но когато реша да премахна инстанция и не става. Таргетите все още стартират предходния брой инстанции и не мога да ги махна. Някакви предложения как да го постигна? Предложиха ми вариант да си напиша един бърз bash скрипт, на който да подавам брой инстанции и да ги стартира за мен. Така темплейтния unit като съдържа PartOf директивата все още ще държи инстанциите в правилната йерархия и когато искам да намаля или увелича инстанциите, това би трябвало да рефлектира правилно. Най-вероятно ще мина на него вариант, но се чудя защо systemd отказва да премахва инстанции, когато вече не са опиасни в Wants директива. А и съм отворен на други предложения освен bash скрипт. -------------------- Бисери :D
|
||||||||||||
relax4o |
Публикувано на: 08-08-2023, 10:08
|
||||||
![]() Име: Група: Потребител Ранг: Почетен член Мнения: 2730 Регистриран на: 04.04.07 ![]() |
Оказа се, че за да изчистя (след промяна на някоя от конфигурациите) трябва да имам следната последователност:
Това мнение е било редактирано от relax4o на 08-08-2023, 10:13 -------------------- Бисери :D
|
||||||
SuN |
Публикувано на: 27-08-2023, 14:52
|
||
![]() Име: Група: Администратор Ранг: Почетен член Мнения: 12473 Регистриран на: 27.01.05 ![]() |
Тъкмо си играх да пусна едно скриптче като услуга от обикновен потребител и забелязах, че никъде в примерите не ползваш "disable":
Когато ползвам "systemctl disable some.service", от директорията с целите (стойността на WantBy) се премахва връзката към тази услуга и systemd няма да се пробва да я стартира. Може да пробваш дали и това е решение на проблема. -------------------- Само аз не троля.
Всички коментари са плод на художествена измислица и нямат общо с действителни и недействителни лица, събития и факти. |
||
relax4o |
Публикувано на: 27-08-2023, 17:46
|
||||||||
![]() Име: Група: Потребител Ранг: Почетен член Мнения: 2730 Регистриран на: 04.04.07 ![]() |
Бях пробвал, според предложение от тема в стака или редит не помня, но при такъв тип инстанции (от темплейт) нямаше разлика, защото системд очевидно знае само за темплейтния сървиз без броя стартирани инстанции от него (така предполагам). За това си реших проблема, който написах във второто си мнение. Спирам всичко и ресетвам всичко, което се счита за фейл и след това стартирам новия брой. В реалното ми решение дори задавам шаблон, за името на сървизите, на reset-failed, за да не пипам всичко, а само това, което ми трябва за конкретния случай. -------------------- Бисери :D
|
||||||||
![]() |
![]() ![]() ![]() |