Eu uso o bom recurso do systemd: Serviços Instanciados.
Existe uma maneira simples de recarregar todos os serviços instanciados com uma chamada?
Exemplo: não quero executar tudo assim:
systemctl restart autossh@foo
systemctl restart autossh@bar
systemctl restart autossh@blu
Eu tentei isso, mas isso não funciona
systemctl restart autossh@*
Relacionado: Inicie N processos com um arquivo de serviço systemd
Atualizar
Primeiro fiquei fascinado com os Serviços Instantiados, mas depois percebi que executar uma ferramenta de gerenciamento de configuração como Ansible faz mais sentido. Aprendi: mantenha as ferramentas simples. Muitas ferramentas começam a implementar a verificação de condições (se .. mais ...) e loops. Por exemplo, servidores da web ou configuração do servidor de correio. Mas isso deve ser resolvido em um nível diferente (superior): gerenciamento de configuração. Consulte: https://github.com/guettli/programming-guidelines#dont-use-systemd-instantiated-units
systemctl status 'autossh@*'
saída:autossh@\x2a.service - ... Active: inactive (dead)
Versão:systemd 195
systemctl restart autossh@{1..2}
(com qualquer N em vez de2
) que é um pouco menos geral, mas também iniciará os processos, se foreminactive (dead)
.Não é legal, mas isso funciona para sistemas com um systemd antigo:
Obviamente, a solução da resposta acima (
systemctl restart 'autossh@*'
) é melhor.fonte
cut
pode analisar o campo errado, caso haja falha nos serviços na saída das unidades de lista.@weirdan A resposta está correta, mas falta algo para determinadas distribuições.
Para o Centos 7 e similares , você pode fazer:
MAS, (start) funcionará SOMENTE, se você especificar o sinalizador "--all":
Caso contrário, ele não encontrará os serviços, pois eles não existem. Esse é o recurso pretendido pelo sistema.
Para sistemas baseados no Ubuntu , funciona da mesma maneira, mas a diferença é que o sinalizador "--all" deve ser especificado para todos os argumentos do systemctl, caso contrário, não fará nada.
fonte
Não sei se existe uma opção para um curinga no terminal para systemd. O que você pode fazer é adicionar um em seus scripts systemd.
O% que eu faria o truque, acho, mas está relacionado à maneira como você roteirizou os serviços instanciados.
Você pode encontrar uma explicação aqui referida como especificadores
o que mostra que:
Não estou respondendo diretamente à sua pergunta, mas pelo que acho que você está tentando alcançar. Se você acha que sua solução pode ser encontrada seguindo essa idéia, compartilhe seu script systemd, para que possamos ilustrar com exemplos e talvez até fornecer o script final.
Se você se sentir confiante em editar seu próprio script para chegar a uma solução dessa maneira, aqui está um exemplo (não vou citá-lo, pois não sei se é relevante para a solução e é muito específico para o que estou propondo)
fonte