Comment puis-je prédire l'ordre d'arrêt de systemd?

9

Existe-t-il un moyen de me systemddire l' ordre approximatif dans lequel il fermera les services lorsque j'arrêterai proprement l'ensemble du système? Comme cela systemdfermera les choses en parallèle, j'apprécie qu'il n'y ait aucun moyen de connaître l'ordre exact, mais il serait toujours très utile de savoir quelles contraintes systemdimposeront à la séquence d'arrêt, de préférence dans une sorte de visualisation facile à comprendre.

La motivation est que pour le développement et le débogage de fichiers de service, il serait beaucoup plus pratique d'obtenir cette liste prédite à l'avance, plutôt que d'avoir à faire un véritable arrêt, puis à redémarrer et à inspecter les journaux chaque fois que je veux déterminer quel impact une modification d'un fichier d'unité de service ou d'un autre aspect de la configuration de systemd aura sur l'ordre d'arrêt.

J'espérais que quelque chose comme

systemctl list-dependencies --before shutdown.service

ferait le travail, mais il n'émet que:

shutdown.service
Adam Spires
la source

Réponses:

2

Les informations suivantes pourraient vous aider:

systemctl list-dependencies --before shutdown.target

Cordialement,

Mohamed Salhi
la source
3
Eh bien, merci d'avoir signalé ma stupide erreur que shutdown.targetnon shutdown.service. Cependant, cela ne me donne toujours pas la liste ordonnée que j'ai demandée, mais plutôt une très courte liste, voire une liste vide sur certains systèmes.
Adam Spires
Systemd est malheureusement opaque à dessein. Pour le style sysvinit oldschool, on pourrait probablement ajouter la journalisation aux fichiers de démarrage et enregistrer les processus démarrés dans un fichier avec un horodatage - c'est du moins ce qui me viendrait à l'esprit en premier.
shevy
1
@AdamSpiers @Mohamed Salhi en gros, "avant" signifie "commence avant". Cela signifie que la commande que vous voulez est systemctl list-dependencies --after shutdown.target... au moins qui trouvera tout ce que la première commande ne contient pas. Il est déroutant aussi parce shutdown.targetest en train , mais toutes les autres unités sont l' arrêt , et dans ce cas , il n'a pas d' importance si vous avez un « avant » ou « après » commande; l'arrêt se fait avant le démarrage dans les deux cas.
sourcejedi
1

L'ordre d'arrêt est généralement l'inverse de l'ordre de démarrage.

Cela dit, les démons reçoivent tous un signal d'arrêt et leur mise à l'arrêt et leur sortie prendront plus ou moins de temps.

Si je ne m'abandonne qu'à systemd, je ne pense pas qu'il soit possible de prévoir utilement quels services se termineront dans quel ordre. De plus, les dépendances contrôleront certaines séquences.

Jonesome Reinstate Monica
la source
1
Droite - j'étais conscient de cela, en raison de la parallélisation. Cependant, je n'ai pas besoin de l'ordre exact - juste quelles ordonnances sont appliquées et quelles choses peuvent potentiellement s'exécuter en parallèle. Je mettrai à jour ma question pour clarifier cela. Pouvez-vous également vous qualifier «habituellement»? Quand ne serait-ce pas l'inverse?
Adam Spires