J'utilise la fonctionnalité intéressante de systemd: services instanciés.
Existe-t-il un moyen simple de recharger tous les services instanciés en un seul appel?
Exemple: je ne veux pas tout exécuter comme ceci:
systemctl restart autossh@foo
systemctl restart autossh@bar
systemctl restart autossh@blu
J'ai essayé ça, mais ça ne marche pas
systemctl restart autossh@*
Connexes: démarrez N processus avec un fichier de service systemd
Mise à jour
J'ai d'abord été fasciné par les services instanciés, mais plus tard, j'ai réalisé que l'exécution d'un outil de gestion de configuration comme Ansible était plus logique. J'ai appris: Gardez les outils simples. De nombreux outils commencent à implémenter la vérification des conditions (si .. sinon ...) et des boucles. Par exemple, serveurs Web ou configuration de serveurs de messagerie. Mais cela devrait être résolu à un niveau différent (supérieur): la gestion de la configuration. Voir: https://github.com/guettli/programming-guidelines#dont-use-systemd-instantiated-units
systemctl status 'autossh@*'
sortie:autossh@\x2a.service - ... Active: inactive (dead)
Version:systemd 195
systemctl restart autossh@{1..2}
(avec n'importe quel N au lieu de2
) ce qui est un peu moins général mais cela démarrera également les processus s'ils le sontinactive (dead)
.Pas sympa, mais cela fonctionne pour les systèmes avec un ancien systemd:
Bien sûr, la solution de la réponse ci-dessus (
systemctl restart 'autossh@*'
) est meilleure.la source
cut
peut analyser le mauvais champ en cas d'échec des services dans la sortie des unités de liste.@weirdan La réponse est correcte, mais il manque quelque chose pour certaines distributions.
Pour Centos 7 et similaires , vous pouvez faire:
MAIS, (début) ne fonctionnera QUE si vous spécifiez le drapeau "--all":
Sinon, il ne trouvera pas les services, car ils n'existent pas. Il s'agit de la fonctionnalité prévue par systemd.
Pour les systèmes basés sur Ubuntu , cela fonctionne à peu près de la même manière, mais la différence est que l'indicateur "--all" doit être spécifié pour tous les arguments systemctl, sinon il ne fera rien.
la source
Je ne sais pas si c'est là une option pour un caractère générique sur le terminal pour systemd. Ce que vous pouvez faire, c'est en ajouter un sur vos scripts systemd.
Le% i ferait l'affaire, je pense, mais est lié à la façon dont vous avez écrit les services instanciés.
Vous pouvez trouver une explication ici appelée spécificateurs
ce qui montre que:
Je ne réponds pas directement à votre question, mais pour ce que je suppose que vous essayez de réaliser. Si vous pensez que votre solution peut être trouvée suite à cette idée, veuillez partager votre script systemd, afin que nous puissions éventuellement illustrer avec des exemples et peut-être même vous fournir le script final.
Si vous avez confiance en l'édition de votre propre script pour parvenir à une solution de cette façon, voici un exemple (je ne le citerai pas car je ne sais pas s'il est pertinent pour la solution et trop spécifique à ce que je '' je propose)
la source