O que Munir mencionou é exatamente como você faz isso. Basicamente, você cria um service
arquivo e o inicia 30 vezes. Agora isso pode parecer um pouco desordeiro, mas tem vantagens, como poder desligar um deles se estiver se comportando mal e não precisar desligá-lo. Também há algumas coisas que você pode fazer para facilitar o gerenciamento.
Primeiro, o arquivo da unidade. Crie um arquivo, como /etc/systemd/system/test@.service
. O bit importante é o @
símbolo.
Seu conteúdo pode se parecer com:
[Service]
ExecStart=/bin/sleep 600 %I
[Install]
WantedBy=multi-user.target
Em seguida, começar com systemctl start test@1.service
, systemctl start test@2.service
.
Os processos iniciados terão a seguinte aparência:
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
Observe que ele %I
foi substituído pelo que você colocou depois de @
quando o iniciou.
Você pode iniciar todos os 30 com um pouco de shell-fu:
systemctl start test@{1..30}.service
Você também pode ativá-los na inicialização como qualquer serviço normal: systemctl enable test@1.service
.
Agora, o que eu quis dizer com coisas que você pode fazer para facilitar o gerenciamento: talvez você não queira usar test@{1..30}.service
para gerenciar todos eles. É um pouco pesado. Você pode criar um novo destino para o seu serviço.
Crie /etc/systemd/system/test.target
com:
[Install]
WantedBy=multi-user.target
Em seguida, ajuste o /etc/systemd/system/test@.service
para que fique parecido com:
[Unit]
StopWhenUnneeded=true
[Service]
ExecStart=/bin/sleep 600 %I
[Install]
WantedBy=test.target
Recarregue systemd com systemctl daemon-reload
(necessário apenas se você estiver modificando o arquivo da unidade e não pular a versão anterior). E agora habilite todos os serviços que você deseja que sejam gerenciados systemctl enable test@{1..30}.service
.
(Se você havia ativado o serviço anteriormente WantedBy=multi-user.target
, desative-o primeiro para limpar a dependência)
Agora você pode fazer systemctl start test.target
e systemctl stop test.target
, e ele iniciará / parará todos os 30 processos.
E, novamente, você pode habilitar a inicialização como qualquer outro arquivo unidade: systemctl enable test.target
.