Lo que Munir mencionó es exactamente cómo haces esto. Básicamente, crea un service
archivo y lo inicia 30 veces. Ahora, eso puede parecer un poco extraño, pero tiene ventajas, como poder cerrar uno de ellos si se comporta mal y no tener que cerrarlos a todos. También hay algunas cosas que puede hacer para facilitar la administración.
Primero, el archivo de la unidad. Cree un archivo, como /etc/systemd/system/test@.service
. Lo importante es el @
símbolo.
Su contenido podría verse así:
[Service]
ExecStart=/bin/sleep 600 %I
[Install]
WantedBy=multi-user.target
A continuación, iniciar con systemctl start test@1.service
, systemctl start test@2.service
.
Los procesos que se inician se verán así:
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
Tenga en cuenta que %I
se sustituyó con lo que haya puesto después de @
cuando lo comenzó.
Puedes comenzar los 30 con un poco de shell-fu:
systemctl start test@{1..30}.service
También puede permitirles en el arranque como cualquier servicio normal: systemctl enable test@1.service
.
Ahora, lo que quise decir con cosas que puedes hacer para facilitar la administración: tal vez no quieras tener que usar test@{1..30}.service
para administrarlas todas. Es un poco difícil de manejar. En su lugar, puede crear un nuevo objetivo para su servicio.
Crea /etc/systemd/system/test.target
con:
[Install]
WantedBy=multi-user.target
Luego ajuste el /etc/systemd/system/test@.service
para que se vea así:
[Unit]
StopWhenUnneeded=true
[Service]
ExecStart=/bin/sleep 600 %I
[Install]
WantedBy=test.target
Vuelva a cargar systemd con systemctl daemon-reload
(solo es necesario si está modificando el archivo de la unidad y no omitió la versión anterior). Y ahora habilite todos los servicios que desea que se administren haciendo systemctl enable test@{1..30}.service
.
(Si anteriormente había habilitado el servicio mientras lo tenía WantedBy=multi-user.target
, deshabilítelo primero para eliminar la dependencia)
Ahora puede hacer systemctl start test.target
y systemctl stop test.target
, e iniciará / detendrá los 30 procesos.
Y de nuevo, puede activar en el arranque como cualquier otro archivo unidad: systemctl enable test.target
.