Puis-je faire afficher l'état du service par systemd après le démarrage ou l'arrêt d'un service?

8

J'essaye d'obtenir que systemd fasse ce que les scripts init.d feraient, montrant automatiquement l'état d'un service après avoir reçu manuellement une commande pour démarrer ou arrêter. Est-ce possible?

systemd revient malheureusement en arrière car il s'exécute en arrière-plan, puis vous devez exécuter une deuxième commande pour afficher l'état, le démarrage ou l'arrêt peut ou peut ne pas avoir fonctionné, systemd ne vous le dira pas à moins que vous ne le demandiez et ne vous laissiez béatement ignorant.

c'est à dire. J'essaye d'obtenir

service nginx status

pour s'exécuter automatiquement après avoir fait

service nginx start

ou

service nginx restart

(ou dans un système cérébral endommagé systemctl start nginx.service)

ck_
la source
1
J'utilise les commandes "cerveau endommagé" (je les aime!). En fait, ils ne disent rien quand tout va bien, mais vous informeront en cas d'échec. Du moins, c'est comme ça sur openSUSE 13.1. Êtes-vous sûr qu'ils sont "silencieux" lorsqu'ils échouent? As-tu essayé systemctl start nginx.service && echo SUCCESS || echo failure?
Huygens
2
@Huygens ne compte pas sur systemd pour détecter tous les échecs, il peut très certainement y avoir des échecs ou des avertissements silencieux. Les processus sont démarrés en arrière-plan et systemd quitte le contrôle, ce n'est pas du tout comme init.d Je peux voir que cela se produit de manière cohérente avec la création de fichiers PID échoue. Obtenir un statut après un démarrage ou un redémarrage manuel est un must absolu avec systemd (et le point de ma question).
ck_
merci pour la clarification, j'ai appris quelque chose ici! J'attends donc avec impatience une réponse à cette question!
Huygens
La syntaxe braindead est service un car contrairement à une bien meilleure syntaxe systemd, elle ne vous permet pas d'opérer sur plusieurs services à la fois: systemctl stop service1 service2 service3
god
1
Si vous voyez toujours la même incohérence lors de la vérification de l'état de sortie systemctlcomme l'avait suggéré @Huygens, le problème peut être que cela nginx.servicedémarre correctement mais se bloque par la suite. Essayez de vérifier le journal ou dans les journaux Nginx.
Amir

Réponses:

1

Il n'y a pas de commande intégrée pour votre cas d'utilisation, vous devrez donc créer un alias pour votre shell préféré ou un wrapper de script trivial.

Dieu
la source
0

Pour rendre systemd plus "verbeux", ajoutez / décommentez les lignes suivantes dans votre /etc/systemd/journald.confpuis redémarrez:

ForwardToConsole=yes
MaxLevelConsole=debug
Anubioz
la source