Ce que Munir a mentionné, c'est exactement comment vous procédez. Fondamentalement, vous créez un service
fichier et le démarrez 30 fois. Cela peut sembler un peu maladroit, mais cela présente des avantages, comme la possibilité de fermer l'un d'eux en cas de mauvais comportement et de ne pas avoir à les fermer tous. Vous pouvez également prendre certaines mesures pour faciliter la gestion.
Tout d'abord, le fichier d'unité. Créez un fichier, tel que /etc/systemd/system/test@.service
. Le bit important est le @
symbole.
Son contenu pourrait ressembler à:
[Service]
ExecStart=/bin/sleep 600 %I
[Install]
WantedBy=multi-user.target
Puis commencez avec systemctl start test@1.service
, systemctl start test@2.service
.
Les processus qui seront lancés ressembleront à:
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
Notez que %I
vous avez été remplacé par tout ce que vous avez mis après le @
moment où vous l'avez commencé.
Vous pouvez commencer les 30 avec un peu de shell-fu:
systemctl start test@{1..30}.service
Vous pouvez également les activer au démarrage comme un service normal: systemctl enable test@1.service
.
Maintenant, ce que je voulais dire par des choses que vous pouvez faire pour faciliter la gestion: peut-être que vous ne voulez pas avoir à utiliser test@{1..30}.service
pour les gérer tous. C'est un peu lourd. Vous pouvez à la place créer une nouvelle cible pour votre service.
Créez /etc/systemd/system/test.target
avec:
[Install]
WantedBy=multi-user.target
Ajustez ensuite le /etc/systemd/system/test@.service
pour qu'il ressemble à:
[Unit]
StopWhenUnneeded=true
[Service]
ExecStart=/bin/sleep 600 %I
[Install]
WantedBy=test.target
Rechargez systemd avec systemctl daemon-reload
(uniquement nécessaire si vous modifiez le fichier d'unité et que vous n'en avez pas ignoré la version précédente). Et maintenant, activez tous les services que vous souhaitez gérer systemctl enable test@{1..30}.service
.
(Si vous aviez précédemment activé le service pendant qu'il l'était WantedBy=multi-user.target
, désactivez-le d'abord pour effacer la dépendance)
Vous pouvez maintenant faire systemctl start test.target
et systemctl stop test.target
, et cela démarrera / arrêtera les 30 processus.
Et encore une fois, vous pouvez activer au démarrage comme tout autre fichier de l' unité: systemctl enable test.target
.