Mon problème:
J'écris un script bash dans lequel j'aimerais vérifier si un service donné est en cours d'exécution.
Je sais comment faire cela manuellement, avec $ service [service_name] status
.
Mais (surtout depuis le passage à systemd), qui imprime un tas de texte un peu compliqué à analyser. J'ai supposé qu'il existe une commande pour les scripts avec une sortie simple ou une valeur de retour que je peux vérifier.
Mais googler autour ne donne qu'une tonne de résultats "Oh, juste ps aux | grep -v grep | grep [service_name]
". Cela ne peut pas être la meilleure pratique, est-ce? Que se passe-t-il si une autre instance de cette commande est en cours d'exécution, mais pas une autre démarrée par le script init SysV?
Ou devrais-je simplement me taire et me salir les mains avec un petit pgrep?
inactive
ouactivating
et les deuxsystemctl status
etsystemctl is-active
sortent avec 3. (à partir de systemd-241 ) Solution de contournement:systemctl show service | grep -qx ActiveStatus=activating