Те, що згадував Мунір, саме так ви робите. В основному ви створюєте serviceфайл і запускаєте його 30 разів. Тепер це може здатися трохи неприємним, але в нього є переваги, такі як можливість закрити одну з них, якщо вона погано поводиться, і не потрібно закривати їх усіх. Є також деякі речі, які можна зробити для полегшення управління.
Спочатку файл одиниці. Створіть файл, такий як /etc/systemd/system/test@.service. Важливий біт - @символ.
Його вміст може виглядати так:
[Service]
ExecStart=/bin/sleep 600 %I
[Install]
WantedBy=multi-user.target
Потім запустіть його systemctl start test@1.service, systemctl start test@2.service.
Процеси, які запускаються, матимуть такий вигляд:
root 17222 19 0 0.0 0.0 Ss 00:05 /bin/sleep 600 1
root 17233 19 0 0.0 0.0 Ss 00:02 /bin/sleep 600 2
Зауважте, що ви %Iзамінили те, що ви поставили після того, @як ви його почали.
Ви можете почати всі 30 з маленького шлау-фу:
systemctl start test@{1..30}.service
Ви також можете включити їх при завантаженні , як і будь-яка нормальна сервіс: systemctl enable test@1.service.
Тепер, що я мав на увазі під дією, яку ви можете зробити, щоб полегшити управління: можливо, вам не потрібно використовувати їх test@{1..30}.serviceдля управління всіма. Це трохи непростий. Натомість можна створити нову ціль для вашої служби.
Створити за /etc/systemd/system/test.targetдопомогою:
[Install]
WantedBy=multi-user.target
Потім відрегулюйте /etc/systemd/system/test@.serviceтак, щоб це виглядало так:
[Unit]
StopWhenUnneeded=true
[Service]
ExecStart=/bin/sleep 600 %I
[Install]
WantedBy=test.target
Перезавантажте системну систему systemctl daemon-reload(потрібна лише в тому випадку, якщо ви змінюєте файл одиниці та не пропускали попередню версію файлу). А тепер увімкніть усі сервіси, якими ви хочете керувати systemctl enable test@{1..30}.service.
(Якщо ви раніше вмикали послугу, поки вона була WantedBy=multi-user.target, відключіть її спочатку, щоб усунути залежність)
Тепер ви можете зробити systemctl start test.targetі systemctl stop test.target, і він буде запускати / зупиняти всі 30 процесів.
І знову ж , ви можете включити при завантаженні , як і будь-який інший файл модуля: systemctl enable test.target.