Ce que je veux dire sous la question est: est-il possible de vider la liste ordonnée (comme pstree pour les processus) pour voir comment systemd a exécuté l'ensemble d'unités fourni, c'est-à-dire l'arbre après la résolution des dépendances et la mise en file d'attente des travaux pour l'exécution ? Je sais que vous pouvez le faire en analysant les données d'état de systemd, mais existe-t-il un moyen rapide de voir un tel arbre? Cela aiderait beaucoup dans une enquête sur un échec (par exemple, si vous voyez que le processus de démarrage est bloqué sur une unité, vous serez en mesure de localiser l'emplacement approximatif de votre enquête plus approfondie.
63
Réponses:
systemd-analyze
est votre ami. Par exemple,systemd-analyze critical-chain
affiche l'arbre de blocage des démons. Le mien par exemple:NetworkManager, par exemple, contient essentiellement le démarrage complet.
Si vous voulez avoir une vue plus détaillée, vous pouvez rendre la chaîne d'exécution entière dans un fichier svg.
systemd-analyze plot > something.svg
affiche la chaîne entière (plus de 120 modules) sous forme de barres de progression dans un fichier svg haute résolution, qui indique les états, les blocages et d'autres problèmes.Enfin, vous avez un
systemd-analyze dot
outil qui sort un fichier point qui sort une hiérarchie entière:systemd-analyze dot | dot -Tpng -o stuff.png
avec l’outil point, vous pouvez aussi le sortir sous forme de fichier ps et svg.Tous les outils ci-dessus sont intégrés à l'outil systemd-analysis qui est fourni par défaut avec systemd au moins dans archlinux. Je pense qu’il existe également des projets de tierces parties.
la source
systemd-analyze plot > something.svg
est plein trois d'exécution avec des cibles (il est plus proche de ce que vous voulez). systemd-analyse est un graphe complet des dépendances (c'est la représentation la plus correcte). Ne sont-ce pas ce que vous voulez? Dans l'intrigue, il suffit de trouver la cible et de voir ce qu'il faut aussi faire fonctionner. Les mêmes dépendances sont exactement listées graph, si vous voulez créer une boîte à outils d’analyse graphique et sélectionner le point du graphe pour lequel vous voulez voir les dépendances (l’outil Point a plus de paramètres). Voir la page de manuel: freedesktop.org/software/systemd/man/systemd-analyze.html - order and similar$ systemd-analyze dot 'avahi-daemon.*' | dot -Tsvg > avahi.svg
$ eog avahi.svg
Ceci trace les dépendances entre toutes les unités cibles connues:systemd-analyze dot --to-pattern='*.target' --from-pattern='*.target' | dot -Tsvg > targets.svg
$ eog targets.svg
Peut encore ne pas répondre complètement à votre question mais essayez avec
--fuzz
optionNotez que vous pouvez également spécifier l' unité de voir leur chaîne critique , de sorte que vous n'êtes pas limité à la multi-user.target
J'espère que cela t'aides
la source
Je ne suis pas sûr de bien comprendre la question, mais il existe des visualisations d'arborescence avec les commandes suivantes:
Et aussi :
J'espère que cela t'aides :)
En outre, il pourrait être utile à d’autres fins de construire une arborescence des dossiers des liens symboliques systemctl:
En fait, il était vraiment utile de détecter les anciennes / unités boguées qui ralentissaient le démarrage de mon système, puis de les désactiver à l’aide de la
systemctl disable
commande.MODIFIER
Cela dit, je suis vraiment d’accord avec le PO pour dire que cette fonctionnalité de base devrait être fournie via des outils en ligne de commande, et non un outil graphique ... Et si vous ne pouvez pas démarrer X? Comment gérez-vous votre fichier svg alors?
En fait, il y a un moyen. Si vous ne pouvez pas utiliser
scp
(outil ssh) pour récupérer votre fichier sur un autre ordinateur, celafbi
pourrait vous aider :)A travaillé dans mes ATS. Il suffit de naviguer à l'intérieur de l'image avec des flèches. Il y a des options de zoom, pour lister faire
fbi -h
.Encore j'espère que cela aide. Il est disponible dans les dépôts Archlinux et Ubuntu.
EDIT 2:
fbi
ne fonctionne pas sur ssh. Vous pouvez effectuer un transfert X de cette manièressh -Y user@server
, mais vous avez besoin d’un serveur X fonctionnant sur votre serveur distant.Le meilleur pari ici est d'utiliser
sshfs
. Cela fonctionne très bien dans l'espace utilisateur, par exemple avec Nautilus. Il y a une petite configuration à faire, voir:la source
sshfs
fonctionne encore mieux. Voir EDIT 2.