O que Munir mencionou é exatamente como você faz isso. Basicamente, você cria um arquivo service
e o inicia 30 vezes. Agora isso pode parecer um pouco desleixado, mas tem vantagens, como ser capaz de calar um deles se estiver se comportando mal, e não ter que calar todos eles. Há também algumas coisas que você pode fazer para facilitar o gerenciamento.
Primeiro, o arquivo da unidade. Crie um arquivo, como /etc/systemd/system/[email protected]
. O bit importante é o símbolo @
.
O conteúdo pode parecer:
[Service]
ExecStart=/bin/sleep 600 %I
[Install]
WantedBy=multi-user.target
Em seguida, inicie-o com systemctl start [email protected]
, systemctl start [email protected]
.
Os processos que são iniciados serão semelhantes 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
Observe que o %I
foi substituído pelo que você colocou após o @
quando você o iniciou.
Você pode começar 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 [email protected]
.
Agora, o que eu quis dizer com as coisas que você pode fazer para tornar o gerenciamento mais fácil: talvez você não queira usar test@{1..30}.service
para gerenciar todas elas. É um pouco desajeitado. Você pode criar um novo alvo para seu serviço.
Crie /etc/systemd/system/test.target
com:
[Install]
WantedBy=multi-user.target
Em seguida, ajuste o /etc/systemd/system/[email protected]
para que pareça:
[Unit]
StopWhenUnneeded=true
[Service]
ExecStart=/bin/sleep 600 %I
[Install]
WantedBy=test.target
Recarregue o systemd com systemctl daemon-reload
(necessário apenas se você estiver modificando o arquivo da unidade e não tiver pulado a versão anterior dele). E agora habilite todos os serviços que você quer que sejam gerenciados fazendo systemctl enable test@{1..30}.service
.
(Se você já habilitou o serviço enquanto tinha WantedBy=multi-user.target
, desative primeiro para limpar a dependência)
Agora você pode fazer systemctl start test.target
e systemctl stop test.target
e iniciar / interromper todos os 30 processos.
E mais uma vez, você pode habilitar na inicialização como qualquer outro arquivo de unidade: systemctl enable test.target
.