Tester si une unité systemd est active dans un script bash
Je suis en train d'écrire un script pour installer automatiquement un serveur bind sur une CentOs 7 de la distribution.
Je suis coincé avec systemctl status
, car elle ne produit pas un code d'erreur (c'est vrai, depuis un état n'est pas une erreur) je peux utiliser.
Ce que je veux, c'est de vérifier si le service est démarré (actif). Quelle est la meilleure et efficace pour ce faire?
En fait
systemctl status
ne renvoient un état - comme je l'ai découvert en faisant systemctl status openvpn@<>
. Où les valeurs sont 0
pour la course, et 3
de l'arrêt. Toutefois, cette commande est interactif :(. D'où l' @lars suggéré systemctl is-active
est la manière de faire, et mieux att le -q
comme suggéré par @palswimOriginalL'auteur math | 2015-05-05
Vous devez vous connecter pour publier un commentaire.
La meilleure façon de vérifier si un service est actif, c'est avec le
systemctl is-active
commande:bon, je vous remercie!
Vous pouvez également utiliser le
-q
commutateur de sorte que vous n'avez pas à rediriger la sortie:systemctl -q is-active sshd
OriginalL'auteur larsks
Si vous voulez vérifier dans un script shell, vous pouvez le faire:
Pour vérifier si une application n'est pas en cours d'exécution juste ajouter un point d'exclamation dans la condition.
Le script fonctionne très bien dans mon machines de production. Si une application est en cours d'exécution, le script se termine, sinon il continue le script.
ressemble le script est en train de vérifier le code de retour de systemctl pas la chaîne de caractères retournée. De sorte qu'il fonctionne.
"Cette instruction si toujours résolu à vrai parce que les chaînes "actifs" et "inactifs" sont à la fois vrai." -> j'ai essayé et ça a fonctionné pour moi.
Pour la paire avec
-q
drapeau, il est préférable de vérifier explicitement pour le code d'état. par exemple, ` systemctl -q est-active some_application.service\n if [ $? -eq 0 ]; then\n echo 'Application'\n sortie 0\n fi ` p.s. désolé pour le désordre avec bloc de code, c'est impossibru à utiliser le saut de ligne pour les commentaires.OriginalL'auteur voliveira89