Те, що згадував Мунір, саме так ви робите. В основному ви створюєте 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
.