Ciò che Munir ha menzionato è esattamente come lo fai. Fondamentalmente si crea un service
file e lo si avvia 30 volte. Ora può sembrare un po 'imbarazzante, ma ha dei vantaggi, come essere in grado di chiuderne uno se si comporta male e non doverli chiudere tutti. Ci sono anche alcune cose che puoi fare per semplificare la gestione.
Innanzitutto, il file dell'unità. Creare un file, ad esempio /etc/systemd/system/test@.service
. Il bit importante è il @
simbolo.
I suoi contenuti potrebbero apparire come:
[Service]
ExecStart=/bin/sleep 600 %I
[Install]
WantedBy=multi-user.target
Quindi avviare con systemctl start test@1.service
, systemctl start test@2.service
.
I processi che verranno lanciati saranno simili a:
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
Si noti che è %I
stato sostituito con tutto ciò che si inserisce dopo il @
momento in cui è stato avviato.
Puoi iniziare tutti e 30 con un po 'di shell-fu:
systemctl start test@{1..30}.service
È inoltre possibile consentire loro in fase di boot come qualsiasi normale servizio: systemctl enable test@1.service
.
Ora, cosa intendevo con cose che puoi fare per semplificare la gestione: forse non vuoi usarlo test@{1..30}.service
per gestirle tutte. È un po 'ingombrante. Puoi invece creare un nuovo target per il tuo servizio.
Crea /etc/systemd/system/test.target
con:
[Install]
WantedBy=multi-user.target
Quindi regolare in /etc/systemd/system/test@.service
modo che appaia:
[Unit]
StopWhenUnneeded=true
[Service]
ExecStart=/bin/sleep 600 %I
[Install]
WantedBy=test.target
Ricarica systemd con systemctl daemon-reload
(necessario solo se si sta modificando il file di unità e non si è saltato la versione precedente di esso). E ora abilita tutti i servizi che vuoi gestire facendo systemctl enable test@{1..30}.service
.
(Se in precedenza avevi abilitato il servizio mentre lo era WantedBy=multi-user.target
, disabilitalo prima per cancellare la dipendenza)
Ora puoi fare systemctl start test.target
e systemctl stop test.target
, e avvierà / fermerà tutti e 30 i processi.
E ancora, è possibile attivare al caricamento del sistema come qualsiasi altro file unità: systemctl enable test.target
.